欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle高级显式游标的使用

程序员文章站 2024-04-04 21:12:41
...

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

Oracle高级显式游标的使用