码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-10-16 18:04:19      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:变量   int   var   rom   tag   blog   select   str   enter   

创建一个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块,计算一年的补偿金额。

标签:变量   int   var   rom   tag   blog   select   str   enter   

原文地址:http://www.cnblogs.com/yblogs/p/7677718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!