跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Oracle高级显式游标的使用

多次打开相同的游标,返回不同的结果集。游标声明部分的形参必须与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,

相关文章