创建一个PL/SQL块,计算一年的补偿金额。

创建一个PL/SQL块,计算一年的补偿金额。

【要求】

²  通过SQL *Plus替代变量将每年的工资和每年的奖金比率传递给PL/SQL块

²  奖金比率为整数,在块中将其转换为小数形式(如15转换成0.15)。

²  如果工资为空,在计算全部补偿金额时将该工资设为0。

【提示】:使用NVL函数来处理空值。

执行后的显示如下:

Please enter the salary amount: 50000

Please enter the bonus percentage: 10

PL/SQL procedure successfully completed.

G_TOTAL

-------

55000

 

SQL> accept p_sal prompt 'Please enter the salary amount:'
Please enter the salary amount:50000
SQL> accept p_bonus prompt 'Please enter the bonus percentage:'
Please enter the bonus percentage:10
SQL> variable g_total number;
SQL> begin
  2   :g_total:=nvl(&p_sal,0)*(1+&p_bonus*0.01);
  3  end;
  4  /
原值    2:  :g_total:=nvl(&p_sal,0)*(1+&p_bonus*0.01);
新值    2:  :g_total:=nvl(50000,0)*(1+10*0.01);

PL/SQL 过程已成功完成。

SQL> print g_total;

   G_TOTAL
----------
     55000

知识点:

1.accpet :可以来接受预先指定变量值,来改变提示语句

SQL> accept p_sal prompt 'Please enter the salary amount:'
Please enter the salary amount:50000

2.nvl函数

  

 

补充: NVL2函数

 

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

 

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

SQL> select ename,NVL2(comm,-1,1) from emp;

 

 

NULLIF函数

 

 

SQL> declare
  2   v_num1 number:=2;
  3   v_num2 number:=2;
  4   a number;
  5  begin
  6  select nullif(v_num1,v_num2)into a from dual;
  7  dbms_output.put_line('a:'||a);
  8  end;
  9  /
a:

PL/SQL 过程已成功完成。


SQL> declare
  2   v_num1 number:=2;
  3   v_num2 number:=3;
  4   a number;
  5  begin
  6   select nullif(v_num1,v_num2)into a from dual;
  7   dbms_output.put_line(a);
  8  end;
  9  /
2

PL/SQL 过程已成功完成。

 

posted @ 2017-10-16 16:56  Queenayao  阅读(509)  评论(0编辑  收藏  举报