标签:变量 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 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 过程已成功完成。
标签:变量 int var rom tag blog select str enter
原文地址:http://www.cnblogs.com/yblogs/p/7677718.html