【发布时间】:2020-08-01 06:57:12
【问题描述】:
我真的很难在下面调用存储过程。我正在使用 oracle sql developer,版本 19.2。我尝试的是this answer,但我收到错误(与 cmets 中描述的错误相同)。为什么sql developer调用这么简单的存储过程这么难?
create or replace PACKAGE BODY "PCK_FIRST" IS
PROCEDURE GET_GETNAMES(
USER_ID IN NUMBER,
M_RESULT OUT TYPES.CURSOR_TYPE
) IS
BEGIN
OPEN M_RESULT FOR
SELECT * FROM PER_NAMES WHERE ID = USER_ID;
END;
END PCK_FIRST;
【问题讨论】:
-
您链接到的答案的 cmets 中描述了几个不同的错误。你具体得到什么错误?你到底是如何调用这个程序的。在您对另一个答案的评论中,您指出此过程在一个包中。那是对的吗?而且我认为这与定义
cursor_type的types包不同? -
@JustinCave - 是的,程序在包内。我已经编辑了我的代码。抱歉,我不明白你关于类型的问题的另一部分?
-
过程的声明表明
m_result的类型为types.cursor_type。这意味着您有一个types包,其中定义了cursor_type。我的猜测是它被定义为一个简单的弱类型引用游标(即它与sys_refcursor相同)但这只是一个猜测。您用来调用此过程的代码是什么?您遇到了什么错误? -
@JustinCave - 这个游标应该在哪里声明?确定它在“类型”文件夹中 - 我已经检查了所有类型。错误是:绑定变量“c”未声明
-
cursor_type在types包中的声明是什么?它是一个简单的弱类型引用游标吗?您用来调用该过程的代码是什么?我假设这就是变量c在没有被声明的情况下被使用的地方。