--查询并打印员工的姓名和薪水
/*
1.光标的属性
%find %notfound
%isopen :判断光标是否打开
%rowcount :影响的行数
2.光标的限制
*/
set SERVEROUTPUT ON
DECLARE
--定义一个光标
cursor cemp is select ename,sal from emp;
--为光标定义对应的变量
pename emp.ename%type;
psal emp.sal%type;
begin
--打开光标
open cemp;
loop
--取一条记录
fetch cemp into pename,psal;
exit when cemp%notfound;
--打印
dbms_output.put_line('员工姓名:'||pename||'----员工薪水:'||psal);
end loop;
--关闭光标
close cemp;
end;
/
------------------------------------------------
--给员工涨工资,总裁1000,经理800,其他400
set SERVEROUTPUT ON
declare
--定义光标,代表给那些员工股涨工资
cursor cemp is select empno,ejob from emp;
pempno emp.empno%type;
pjob emp.empjob%type;
begin
--打开光标
open cemp;
loop
-- 去除一个员工
fetch cemp into pempno,pjob;
exit when cemp%notfound;
--判断员工的职位
if pjob = 'PERSIDENT' then update emp set sal = sal + 1000 where empno=pempno;
elsif pjob = 'MANAGER' then update emp set sal = sal + 800 where empno = pempno;
else update emp set sal = sal + 500 where empno = pempno;
end if;
end loop;
close cemp;
--必须要提交
commit;
end;
/
------------------------------
--查询并打印员工的姓名和薪水
/*
1.光标的属性
%find %notfound
%isopen :判断光标是否打开
%rowcount :影响的行数
2.光标的限制:默认的情况下,oracle数据库只允许在同一个会话中,打开300的光标
*/
set SERVEROUTPUT ON
declare
--定义光标
cursor cemp(dno in number) is select ename from emp where deptno = dno;
pename emp.ename%type;
begin
--打开光标
open cemp(20);
loop
--去除员工
fetch cemp into pename;
exit when cemp%notfound;
dbms_output.put_line(pename);
end loop;
--关闭光标
close cemp;
end;
/
oracle学习之光标
最新推荐文章于 2024-03-18 18:52:42 发布