Не отговарям директно на въпроса - не знам защо поведението е различно или как да го променя при извикване на функцията от заявка, освен с column
команда, за да зададете ширината, като използвате псевдоним тук, за да опростите леко нещата:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Но можете също да получите желания резултат, като извикате функцията по различен начин; с променлива и анонимен блок (или execute
като стенография):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Е, почти както искате; първият ред на изхода е името на променливата, а не списъкът с функции/параметри; но колоните на курсора не са обвити:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
Можете също да стартирате функцията си от редактора на кода (а не от работния лист), който генерира анонимен блок за вас; когато щракнете върху стрелката за изпълнение (или натиснете Control-F10), ще получите диалогов прозорец като този:
И след като го стартирате, получавате раздел „изходни променливи“ в долната част на главния прозорец, който показва изхода на курсора в мрежа.
Можете също да видите изгледа на мрежата, когато стартирате select my_function(...) from dual
. Курсорът отива в нормалния прозорец за „резултат от заявка“, но не в много удобна форма, изглежда като нещо като:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Но ако щракнете двукратно върху стойност, тогава ще видите жълт символ на молив в най-дясната част на колоната и щракването върху него показва този курсор в собствената му решетка.
Лично аз предпочитам print
опция в изхода на скрипта, но така или иначе рядко използвам gird дисплеите.