Как увидеть результат/результат refcursor в Oracle SQL Developer?

Возможный дубликат:
Лучший способ/инструмент для получения результатов от процедуры пакета oracle
Oracle SQL Developer: показать результаты REFCURSOR в сетке?

Я новичок в Oracle SQL Developer. Я использую Oracle SQL Developer версии 3.0. Я пытался проверить свой SP, используя следующий запрос.

DECLARE
  type output_cursor is ref cursor;
  P_CURSOR output_cursor;
BEGIN
  P_CURSOR := NULL;
  myPackage.mySPTest (  P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ;
END;

Когда я выполнил вышеуказанный запрос в своем Oracle SQL Developer, я получаю сообщение "anonymus block completed" и его результат не отображается.

Может ли кто-нибудь помочь мне, как увидеть результат.

.

Ответ 1

Вы можете использовать переменную связывания, объявленную в SQL Developer, для хранения и отображения результатов:

var r refcursor;
exec myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
print r;

exec является сокращением для анонимного блока, поэтому это эквивалентно:

var r refcursor;
begin
    myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
end;
/
print r;

Если P_CURSOR не объявлен чем-то бесполезным, возможно...

Ответ 2

Чтобы просмотреть результаты вашего курсора, вам необходимо прокрутить курсор и напечатать значения. Вам нужно знать имена столбцов для возвращаемого курсора. Вы можете сделать что-то вроде:

DECLARE
   type output_cursor is ref cursor;
   P_CURSOR output_cursor;
BEGIN
   P_CURSOR := NULL;
   DOCTORS_APP.get_reminders (  P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ;
   //replace Column1 and Column2 with actual column names
   FOR CUR_VAL in P_CURSOR LOOP
        DBMS_OUTPUT.PUT_LINE(CUR_VAL.Column1||' '||CUR_VAL.Column2);
   END LOOP;
 END;