De vraag niet direct beantwoorden - ik weet niet waarom het gedrag anders is of hoe ik het kan veranderen bij het aanroepen van de functie vanuit een query, behalve met een column
commando om de breedte in te stellen, gebruik hier een alias om de zaken enigszins te vereenvoudigen:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Maar u kunt ook de gewenste uitvoer krijgen door de functie anders aan te roepen; met een variabele en een anoniem blok (of execute
als steno):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Nou ja, bijna zoals je het wilt; de eerste regel van de uitvoer is de variabelenaam in plaats van de functie/parameterlijst; maar de cursorkolommen zijn niet ingepakt:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
U kunt uw functie ook uitvoeren vanuit de code-editor (in plaats van het werkblad), die een anoniem blok voor u genereert; als je op de rennen-pijl klikt (of op control-F10 drukt), krijg je een dialoogvenster als dit:
En nadat je het hebt uitgevoerd, krijg je een tabblad 'uitvoervariabelen' onder aan het hoofdvenster dat de cursoruitvoer in een raster toont.
U kunt de rasterweergave ook zien wanneer u select my_function(...) from dual
. uitvoert . De cursor gaat naar het normale 'queryresultaat'-venster, maar niet in een erg vriendelijke vorm, en verschijnt als zoiets als:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Maar als u dubbelklikt op een waarde, ziet u een geel potloodsymbool helemaal rechts van de kolom, en als u daarop klikt, wordt die cursor in zijn eigen raster weergegeven.
Persoonlijk geef ik de voorkeur aan de print
optie in de scriptuitvoer, maar ik gebruik de gird-displays sowieso zelden.