oracle - ORACLE 使用游标类型调用包内的存储过程
问题描述
我真的很难在下面调用存储过程。我正在使用 oracle sql developer,版本 19.2。我尝试过的是这个答案,但我收到了错误(与评论中描述的错误相同)。为什么从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;
解决方案
首先,我建议您运行此程序,然后再次尝试执行您的程序
create or replace package types as
type cursor_type is ref cursor;
end
/
否则试试这个改变TYPES.CURSOR_TYPE with sys_refcursor
--example
create table test_user (
user_id number(19) not null,
username varchar2(50)
);
insert into test_user values (1, 'user1');
insert into test_user values (2, 'user2');
create or replace procedure test_proc (
p_user_id in number,
p_out_rec out sys_refcursor
)
is
l_out SYS_REFCURSOR;
begin
open l_out for
select *
from test_user
where user_id = p_user_id;
end;
/
declare
l_output sys_refcursor;
l_userid number := 1;
begin
test_proc(1, l_output);
end;
PL/SQL procedure successfully completed.
推荐阅读
- javascript - Why can't I display the contents of this API?
- android - 以下类无法实例化- Recycler 视图
- networkx - networkx:从多重图中删除具有特定属性的边
- swift - Swift:尝试阅读 swift 源代码
- postgresql - Postgresql /copy 用于插入枚举值
- amazon-s3 - Slingshot 无法上传到 S3
- javascript - 指定一条私人消息以获得有限的答案 discord.js
- aws-lambda - AWS Sam 本地环境变量在 process.env 中不可用
- swift - Vapor:如何不接收特定的上传?
- oracle - Oracle 的全部插入与按列插入的功能