创建一个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:50000SQL> accept p_bonus prompt 'Please enter the bonus percentage:'Please enter the bonus percentage:10SQL> 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 /2PL/SQL 过程已成功完成。