以scott用户登录案例库,通过游标输出相关信息
Oracle,plsql编程,行变量的使用
3.16(1)
–以scott用户登录案例库,通过游标输出员工编号、名字、收入。
declare
cursor p is select empno,ename,sal from emp; --定义游标
v_empno emp.empno%type;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open p; --打开游标
fetch p into v_empno,v_ename,v_sal; --推进游标
while p%FOUND loop
dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
fetch p into v_empno,v_ename,v_sal; --推进游标
end loop;
close p; --关闭游标
end;
3.16(2)
–以scott用户登录案例库,通过游标输出员工编号、名字、收入。
declare
cursor p is select * from emp; --定义游标
v_row emp%rowtype; --行变量
begin
open p; --打开游标
fetch p into v_row; --推进游标
while p%FOUND loop
dbms_output.put_line(v_row.empno||','||v_row.ename||','||v_row.sal);
fetch p into v_row; --推进游标
end loop;
close p; --关闭游标
end;
3.17
–以scott用户登录案例库,计算员工的纳税。输出员工工号、姓名、薪水、应缴税。
declare
cursor p is select * from emp; --定义游标
v_row emp%rowtype;
v_tax number(6,1);
v_base number(4):=1000; --基数
begin
open p; --打开游标
fetch p into v_row; --推进游标
while p%FOUND loop
if v_row.sal<=v_base then
v_tax:=0;
elsif v_row.sal<=2000 then
v_tax:=(v_row.sal-v_base)*0.1;
else
v_tax:=(v_row.sal-v_base)*0.15;
end if;
dbms_output.put_line(v_row.empno||','||v_row.ename||','||v_row.sal||','||v_tax);
fetch p into v_row; --推进游标
end loop;
close p; --关闭游标
end;
3.18
–以scott用户登录案例库,计算员工的纳税。输出员工工号、姓名、薪水、应缴税。
declare
cursor p is select empno,ename,sal from emp; --定义游标
type myrec is record --记录类型
(empno emp.empno%type,
ename emp.ename%type,
sal emp.sal%type);
v_row myrec; --行变量,类型是记录类型
v_tax number(6,1);
v_base number(4):=1000; --基数
begin
open p; --打开游标
fetch p into v_row; --推进游标
while p%FOUND loop
if v_row.sal<=v_base then
v_tax:=0;
elsif v_row.sal<=2000 then
v_tax:=(v_row.sal-v_base)*0.1;
else
v_tax:=(v_row.sal-v_base)*0.15;
end if;
dbms_output.put_line(v_row.empno||','||v_row.ename||','||v_row.sal||','||v_tax);
fetch p into v_row; --推进游标
end loop;
close p; --关闭游标
end;