Как отобразить результаты реф курсора с помощью SQL Developer - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть хранимая процедура с несколькими курсорами.Они определены как параметры 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 не объявлен.

Переменная объявлена, поэтому я не понимаю ошибку.

1 Ответ

0 голосов
/ 01 февраля 2019

Два способа поддержки SQL Developer - GUI и код.

GUI

Если вы выполняете хранимую процедуру из редактора кода, найдите сохраненныйПроцедура в дереве, нажмите на нее, используйте кнопку Выполнить - мы возьмем ВСЕ ваши выходные данные и покажем их ниже на панелях вывода:

enter image description here

И ваша попытка, Код:

Если вы находитесь в рабочей таблице 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

enter image description here

...