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

Posted Queenayao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个PL/SQL块,计算一年的补偿金额。相关的知识,希望对你有一定的参考价值。

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

【要求】

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

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

2  如果工资为空,在计算全部补偿金额时将该工资设为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 promptPlease 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 过程已成功完成。

 

以上是关于创建一个PL/SQL块,计算一年的补偿金额。的主要内容,如果未能解决你的问题,请参考以下文章

SQL 怎么按时间汇总累计金额

如何使用绑定变量使整个 PL/SQL 代码块动态化?

PL/SQL(如何计算任何一年任何季度的第一天和最后一天)

如何找到包括当前金额在内的一年的先前金额的总和

为啥在匿名 PL/SQL 块中没有立即引发异常?

如何使用此代码添加匿名块