Ich beantworte die Frage nicht direkt - ich weiß nicht, warum das Verhalten anders ist oder wie es geändert werden kann, wenn die Funktion aus einer Abfrage aufgerufen wird, außer mit einer column
Befehl, um die Breite festzulegen, wobei hier ein Alias verwendet wird, um die Dinge etwas zu vereinfachen:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Aber Sie können die gewünschte Ausgabe auch erhalten, indem Sie die Funktion anders aufrufen; mit einer Variablen und einem anonymen Block (oder execute
als Kurzschrift):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Nun, fast so, wie Sie es wollen; die erste Zeile der Ausgabe ist eher der Variablenname als die Funktions-/Parameterliste; aber die Cursorspalten werden nicht umbrochen:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
Sie können Ihre Funktion auch über den Code-Editor (statt über das Arbeitsblatt) ausführen, der einen anonymen Block für Sie generiert; Wenn Sie auf den Ausführen-Pfeil klicken (oder Strg-F10 drücken), erhalten Sie einen Dialog wie diesen:
Und nachdem Sie es ausgeführt haben, erhalten Sie unten im Hauptfenster eine Registerkarte "Ausgabevariablen", die die Cursorausgabe in einem Raster anzeigt.
Sie können die Rasteransicht auch sehen, wenn Sie select my_function(...) from dual
ausführen . Der Cursor geht in das normale „Abfrageergebnis“-Fenster, aber nicht in einer sehr freundlichen Form, die so aussieht wie:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Wenn Sie jedoch auf einen Wert doppelklicken, sehen Sie ganz rechts in der Spalte ein gelbes Stiftsymbol, und wenn Sie darauf klicken, wird dieser Cursor in einem eigenen Raster angezeigt.
Ich persönlich bevorzuge den print
Option in der Skriptausgabe, aber ich verwende die Gitteranzeigen sowieso selten.