【发布时间】:2019-06-26 11:04:27
【问题描述】:
我有一个带有多个游标的存储过程。它们被定义为 IN OUT 参数。我想使用 SQL Developer 显示游标的结果。 这是一个存储过程的例子:
SET serveroutput on;
DECLARE
p_input_stream VARCHAR2(200);
p_msg_code NUMBER;
p_msg_parms VARCHAR2(200);
p_return_code NUMBER;
p_trailer_cur sl_globals.curtype_weak;
BEGIN
/* Assign values to IN parameters */
p_input_stream := '24954286Mnull|5155035|2|436|SCAN|47720|XTRA|0105||5155035||||N|~|\r';
p_trailer_cur := null;
EXEC TRAILER_INFO(p_input_stream,
p_msg_code, p_msg_parms, p_return_code,
p_trailer_cur)
/* Display OUT parameters */
dbms_output.put_line('p_msg_code: ' || p_msg_code);
dbms_output.put_line('p_msg_parms: ' || p_msg_parms);
dbms_output.put_line('p_return_code: ' || p_return_code);
我已经尝试创建一个 refcursor 变量并像这样使用它来代替p_trailer_cur
VARIABLE trailer_cur refcursor;
EXEC TRAILER_INFO(p_input_stream,
p_msg_code, p_msg_parms, p_return_code,
:trailer_cur)
print trailer_cur;
我得到错误:
SP2-0552:Bind Varialbe "trailer_cur 未声明。
变量已声明,所以我不明白错误。
【问题讨论】:
-
PL/SQL 块中的
EXEC是什么? PL/SQL 中没有这样的命令。 -
EXEC 是一个 SQLPlus 命令 - 它不是 plsql 语言的一部分