Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Die Ausgabe des SQL Developer-Skripts kürzt die Breite von sys_refcursor

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.