游标loop循环和游标for循环的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游标loop循环和游标for循环的区别相关的知识,希望对你有一定的参考价值。

参考技术A BEGIN
  --隐含打开游标
  FOR v_sal IN c_sal LOOP
   --隐含执行一个FETCH语句
  DBMS_OUTPUT.PUT_LINE(to_char(v_sal.employee_id)||'---'|| v_sal.ename||'---'||to_char(v_sal.salary)) ;
  --隐含监测c_sal%NOTFOUND
  END LOOP;
  --隐含关闭游标
  END;本回答被提问者采纳

oracle存储过程返回游标,取值报错

第一,你首先要保证你的过程是正确的,然后才可以去考虑调用的问题;
第二,你调用的语句有问题,在你的存储过程中,OPEN 已经打开了游标,而你采用FOR游标,它又要去打开一次,建议你采用简单得LOOP去遍历游标。可能就没有问题了,
给你一个简单得例子:
CREATE OR REPLACE PROCEDURE PROGETALLUSER(P_USER OUT SYS_REFCURSOR) IS
BEGIN
OPEN P_USER FOR SELECT USERNAME,PASSWORD FROM TB_USER;
END PROGETALLUSER;

DECLARE
C_USER SYS_REFCURSOR;
C TB_USER%ROWTYPE;
BEGIN
PROGETALLUSER(C_USER);
LOOP
FETCH C_USER INTO C;
EXIT WHEN C_USER%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(C.USERNAME||','||C.PASSWORD);
END LOOP;
CLOSE C_USER;
END;
参考技术A 把stulist定义为游标类型先,就可以了

type v_stulist is ref cursor;
stulist v_stulist;
在定义加一个这个试试吧
参考技术B 我靠你这是存储过程吗?语法各种错

以上是关于游标loop循环和游标for循环的区别的主要内容,如果未能解决你的问题,请参考以下文章

关于游标和for循环的问题

oracle for loop循环以及游标循环

Oracle存储过程游标for循环怎么写

Oracle loop循环while循环for循环if选择和case选择更改读取数据游标触发器存储过程

SQL游标怎么循环更新

SQL 中将游标循环查询的结果插入到临时表中