隐式游标 | 显式游标 |
PL/SQL维护,当执行查询时自动打开和关闭 | 在程序中显式定义、打开、关闭,游标有一个名字。 |
游标属性前缀是SQL | 游标属性的前缀是游标名 |
属性%ISOPEN总是为FALSE | %ISOPEN根据游标的状态确定值 |
SELECT语句带有INTO子串,只有一行数据被处理 | 可以处理多行数据,在程序中设置循环,取出每一行数据。 |
使用游标
这里要做一个声明,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标。要在程序中使用游标,必须首先声明游标。
声明游标
语法:
CURSOR cursor_name IS select_statement; |
DELCARE CURSOR C_EMP IS SELECT empno,ename,salary FROM emp WHERE salary>2000 ORDER BY ename; .. BEGIN |
OPEN cursor_name |
OPEN C_EMP; |
CLOSE cursor_name |
CLOSE C_EMP; |
FETCH cursor_name INTO variable[,variable,] |
SET SERVERIUTPUT ON DECLARE v_ename EMP.ENAME%TYPE; v_salary EMP.SALARY%TYPE; CURSOR c_emp IS SELECT ename,salary FROM emp; BEGIN OPEN c_emp; FETCH c_emp INTO v_ename,v_salary; DBMS_OUTPUT.PUT_LINE(''Salary of Employee''|| v_ename ||''is''|| v_salary); FETCH c_emp INTO v_ename,v_salary; DBMS_OUTPUT.PUT_LINE(''Salary of Employee''|| v_ename ||''is''|| v_salary); FETCH c_emp INTO v_ename,v_salary; DBMS_OUTPUT.PUT_LINE(''Salary of Employee''|| v_ename ||''is''|| v_salary); CLOSE c_emp; END |