需求:查询并输出30号部门的雇员信息
方式一:使用 loop...fetch
1 SET serveroutput ON; 2 DECLARE 3 CURSOR c_emp IS 4 SELECT * FROM emp WHERE deptno = 30; 5 v_emp emp%rowtype; 6 BEGIN 7 OPEN c_emp; 8 loop 9 fetch c_emp INTO v_emp;10 exit WHEN c_emp%notfound;11 dbms_output.put_line(v_emp.empno||' '||v_emp.ename||' '||v_emp.job||' '||v_emp.mgr||' '||v_emp.hiredate||' '||v_emp.sal||' '||v_emp.comm||' '||v_emp.deptno);12 end loop;13 close c_emp;14 END;15 /
方式二:使用游标 for 循环
1 SET serveroutput ON; 2 DECLARE 3 CURSOR c_emp IS 4 SELECT * FROM emp WHERE deptno = 30; 5 v_emp emp%rowtype; 6 BEGIN 7 FOR e IN c_emp loop 8 dbms_output.put_line(e.empno||' '||e.ename||' '||e.job||' '||e.mgr||' '||e.hiredate||' '||e.sal||' '||e.comm||' '||e.deptno); 9 end loop;10 END;11 /
方式三:使用动态sql和绑定变量
1 SET serveroutput ON; 2 DECLARE 3 TYPE emp_cursor IS REF CURSOR; 4 c_emp emp_cursor; 5 v_emp emp%rowtype; 6 BEGIN 7 OPEN c_emp FOR 'select * from emp where deptno =:n' USING 30; 8 loop 9 fetch c_emp INTO v_emp;10 exit WHEN c_emp%notfound;11 dbms_output.put_line(v_emp.empno||' '||v_emp.ename||' '||v_emp.job||' '||v_emp.mgr||' '||v_emp.hiredate||' '||v_emp.sal||' '||v_emp.comm||' '||v_emp.deptno);12 END loop;13 close c_emp;14 END;15 /
原标题:在PL/SQL中使用游标、动态sql和绑定变量的小例子
关键词:sql