Oracle游标使用

首先游标的声明语法是这样的:

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;
原文地址:https://www.cnblogs.com/Jims2016/p/5760072.html