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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 我靠你这是存储过程吗?语法各种错

以上是关于oracle存储过程返回游标,取值报错的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 存储过程调用返回游标的另一个存储过程。

如何调用返回引用游标的Oracle存储过程

C#执行oracle返回游标类型的存储过程

将 Dapper 与返回游标的 Oracle 存储过程一起使用

如何使用c#执行返回多个游标的oracle存储过程

Oracle调用存储过程返回游标结果