多次打开相同的游标,返回不同的结果集。游标声明部分的形参必须与OPEN语句中提供的实参相对应(数量与数据类型)。
1、参数化的游标
作用:多次打开相同的游标,返回不同的结果集。游标声明部分的形参必须与open语句中提供的实参相对应(数量与数据类型)。
例1:
declare v_empno emp1.empno%type;v_ename emp1.ename%type;cursor emp_cursor (p_deptno number, p_job varchar2) is ——定义参数时不需要指定精度select empno, ename from emp1 where deptno=p_deptno and job=p_job;begin open emp_cursor(30,'salesman'); ——带参数使用的游标loop fetch emp_cursor into v_empno, v_ename;exit when emp_cursor%notfound or emp_cursor%notfound is null;dbms_output.put_line('empno is '||v_empno||' and '||' ename is '||v_ename);end loop;close emp_cursor;end;
2、记录+FOR+游标参数
DECLARE CURSOR emp_c (p_job VARCHAR2) IS SELECT ename, sal FROM emp WHERE job=p_job FOR UPDATE NOWAIT;BEGIN FOR e_record IN emp_c(UPPER('&jobs')) ——使用替代变量LOOP dbms_output.put_line(e_record.ename||'''s sal:'||e_record.sal);END LOOP;END;/ Enter value for jobs: manager old 6: for e_record in emp_c(upper('&jobs')) new 6: for e_record in emp_c(upper('manager')) JONES's sal:2975 BLAKE's sal:2850 CLARK's sal:2450,
