Как увидеть результат/результат 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;