显式光标查询中的变量
显示光标的查询可以引用它作用域内的任何变量。当打开光标时,PL/SQL计算查询中的变量,且在识别结果集时使用这些值。后面改变这些变量的值,不会改变结果集。
|
DECLARE sal employees.salary%TYPE; sal_multiple employees.salary%TYPE; factor INTEGER := 2;
CURSOR c1 IS SELECT salary, salary * factor FROM employees WHERE job_id LIKE 'AD_%';
BEGIN OPEN c1; -- PL/SQL计算factor
LOOP FETCH c1 INTO sal, sal_multiple; EXIT WHEN c1%NOTFOUND; DBMS_OUTPUT.PUT_LINE('factor = ' || factor || ', sal = ' || sal || ', sal_multiple = ' || sal_multiple); factor := factor + 1; -- 不会影响结果集 END LOOP;
CLOSE c1;
END;
|
|
--为了改变结果集,必须关闭光标,改变变量的值,然后再次打开光标 DECLARE sal employees.salary%TYPE; sal_multiple employees.salary%TYPE; factor INTEGER := 2;
CURSOR c1 IS SELECT salary, salary*factor FROM employees WHERE job_id LIKE 'AD_%';
BEGIN DBMS_OUTPUT.PUT_LINE('factor = ' || factor); OPEN c1; -- PL/SQL 计算factor LOOP FETCH c1 INTO sal, sal_multiple; EXIT WHEN c1%NOTFOUND; DBMS_OUTPUT.PUT_LINE('sal = ' || sal || ', sal_multiple = ' || sal_multiple); END LOOP; CLOSE c1;
factor := factor + 1; DBMS_OUTPUT.PUT_LINE('factor = ' || factor); OPEN c1; -- PL/SQL 计算factor LOOP FETCH c1 INTO sal, sal_multiple; EXIT WHEN c1%NOTFOUND; DBMS_OUTPUT.PUT_LINE('sal = ' || sal || ', sal_multiple = ' || sal_multiple); END LOOP; CLOSE c1;
END;
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1122703/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1122703/


116

被折叠的 条评论
为什么被折叠?



