首先游标的声明语法是这样的:
CURSOR cursor_name IS select_statement
我们写一个简单的存储过程,for循环取出游标显示:
--FOR 循环游标 --步骤 1.定义游标 --2.定义游标变量(可以理解为实例化) --3.利用FOR循环来使用游标 CREATE OR REPLACE PROCEDURE prd_test AS CURSOR c_emp IS --声明游标 SELECT t1.empno ,t1.ename ,t2.dname ,t2.loc ,t1.job ,t1.sal FROM EMP t1 LEFT JOIN DEPT t2 ON t1.deptno=t2.deptno; c_row c_emp%rowtype; --定义游标变量(实例化) BEGIN FOR c_row IN c_emp LOOP --循环游标 dbms_output.put_line('我的工号是:'||c_row.empno||',我叫'||c_row.ename||',我来自'||c_row.loc); END LOOP; END;
Fetch游标的用法:
--Fetch游标 --注意:使用的时候必须要明确打开和关闭 CREATE OR REPLACE PROCEDURE prd_fetch AS CURSOR c_emp IS SELECT t1.empno ,t1.ename ,t2.dname ,t2.loc ,t1.job ,t1.sal FROM EMP t1 LEFT JOIN DEPT t2 ON t1.deptno=t2.deptno; c_row c_emp%rowtype; BEGIN OPEN c_emp; --打开游标 LOOP FETCH c_emp INTO c_row; --提取一行数据到c_row EXIT WHEN c_emp%notfound; --判断是否提取到值,没取到值就退出 dbms_output.put_line('我的工号是:'||c_row.empno||',我叫'||c_row.ename||',我来自'||c_row.loc); END LOOP; close c_emp; END;