我有一个带有多个游标的存储过程。它们被定义为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:绑定Varialbe“未声明trailer_cur。
在变量被声明,所以我不理解的错误。
答案 0 :(得分:1)
SQL Developer支持的两种方式-GUI和代码。
GUI
如果您从代码编辑器中执行存储过程,请在树中找到该存储过程,单击它,使用“执行”按钮-我们将获取您的所有输出,并在输出面板下方显示它:< / p>
还有您的尝试,代码:
如果您在SQL工作表中并且具有匿名块,则可以使用F5(包括打印命令)运行它。
像这样-
create or replace function get_emps(dno in number) return sys_refcursor
is
return_value sys_refcursor;
begin
open return_value for
select * from employees where department_id = dno;
return return_value;
end;
/
var rc refcursor
exec :rc := get_emps(90)
print rc