Разработчик Oracle SQL: Показать результаты REFCURSOR в сетке?

В ответ на вопрос "Получить набор результатов из хранимой процедуры Oracle" , есть ли способ показать результаты хранимой процедуры, которая возвращает REFCURSOR в сетке (вместо обычного текстового окна вывода сценария) в SQL Developer?

РЕДАКТИРОВАТЬ: Ответ помог, но у меня все еще проблема с отображением набора результатов в окне «Просмотр значения»:

alt text

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

alt text


person technomalogical    schedule 24.08.2010    source источник


Ответы (1)


Я не думаю, что у вас получится с процедурой.

Изменить: Спасибо DCookie за упрощение моего исходного ответа.

Но в качестве обходного пути вы можете написать функцию, которая вызывает процедуру, а затем вызывает ее с помощью SQL.

e.g.

create or replace function callmyproc
return sys_refcursor
IS
   rc   sys_refcursor;
BEGIN

   myproc(rc);

   return rc;

END;

Затем вы можете позвонить с помощью:

   select callmyproc()
   from dual;

При запуске этого примера в сетке данных SQL Developer отображается один результат, но если вы прокрутите вправо и щелкните кнопку редактирования, вы увидите результаты в сетке.

person Ian Carpenter    schedule 24.08.2010
comment
Или, что еще проще, создайте функцию, которая вызывает процедуру и возвращает рефкурсор. - person DCookie; 25.08.2010
comment
@DCookie - Конечно! гораздо более элегантный способ. Спасибо, я изменил свой ответ. - person Ian Carpenter; 25.08.2010
comment
Спасибо за вашу помощь. Я принял ответ, но для результатов, которые я получаю, окно View Value показывает крошечные столбцы, которые я не могу раскрыть при нажатии кнопки редактирования. - person technomalogical; 25.08.2010
comment
@technomalogical: я понимаю, что вы имеете в виду, пример хорош, но вывод с большим количеством столбцов вызовет проблемы. Похоже, что при изменении размера окна размер сетки данных не меняется. Извините, я не знаю, как решить эту проблему! - person Ian Carpenter; 25.08.2010