declare -- 创建一个游标 cursor emps is select * from emp; -- 声明一个变量记录数据 em emp%rowtype; begin -- 打开游标 open emps; --循环读取数据 loop fetch emps into em; -- 当 游标为空时退出循环 exit when emps%notfound; -- 输出数据 dbms_output.put_line('姓名:'||+em.ename||'工资:'|| em.sal); end loop; -- 关闭游标 close emps; end; ------------------------------------------------------------------------------------------------------------------------------------------------------- declare -- 创建带参数的游标 cursor emps(dno number) is select * from emp where deptno=dno; em emp%rowtype; begin -- 打开游标时传参数 open emps(10); loop fetch emps into em; exit when emps%notfound; dbms_output.put_line('姓名'||em.ename||'工资'||em.sal||'部门编号'||em.deptno); end loop; close emps; end; -- -系统引用游标 declare -- 声明系统引用游标 emps sys_refcursor; em emp%rowtype; begin --打开游标 open emps for select * from emp; -- 遍历 loop fetch emps into em; exit when emps%notfound; dbms_output.put_line('姓名'||em.ename||'工资'||em.sal||'部门编号'||em.deptno); end loop; end; --按照员工工作给所有员工涨工资,总裁涨1000,经理涨800,其他人涨400 declare cursor emps is select * from emp; em emp%rowtype; begin open emps; loop fetch emps into em; exit when emps%notfound; if em.job='PRESIDENT' then update emp set sal=sal+1000 where empno=em.empno; d elsif em.job='MANAGER' then update emp set sal=sal+800 where empno=em.empno; else update emp set sal=sal+400 where empno=em.empno; end if; end loop; close emps; commit; end;
PLSQL游标(含带参数)
猜你喜欢
转载自blog.csdn.net/weixin_41167150/article/details/80773366
今日推荐
周排行