Svarer ikke direkte på spørgsmålet - jeg ved ikke, hvorfor adfærden er anderledes, eller hvordan man ændrer den, når funktionen kaldes fra en forespørgsel, andet end med en column
kommando for at indstille bredden, ved at bruge et alias her for at forenkle tingene lidt:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Men du kan også få det output du ønsker ved at kalde funktionen anderledes; med en variabel og en anonym blok (eller execute
som stenografi):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Nå, næsten som du vil have det; den første linje i outputtet er variabelnavnet i stedet for funktions-/parameterlisten; men markørkolonnerne er ikke ombrudt:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
Du kan også køre din funktion fra kodeeditoren (i stedet for arbejdsarket), som genererer en anonym blok til dig; når du klikker på Kør-pilen (eller trykker på kontrol-F10) får du en dialog som denne:
Og efter at have kørt det får du en 'outputvariable' fane nederst i hovedvinduet, som viser markørens output i et gitter.
Du kan også se gittervisningen, når du kører select my_function(...) from dual
. Markøren går ind i det normale 'forespørgselsresultat'-vindue, men ikke i en meget venlig form, der vises som noget i retning af:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Men hvis du dobbeltklikker på en værdi, ser du et gult blyantsymbol yderst til højre i kolonnen, og ved at klikke på det vises den markør i sit eget gitter.
Personligt foretrækker jeg print
mulighed i script-outputtet, men jeg bruger sjældent gird-skærmene alligevel.