Oracle
 sql >> Database >  >> RDS >> Oracle

L'output dello script di SQL Developer tronca la larghezza di sys_refcursor

Non rispondendo direttamente alla domanda:non so perché il comportamento è diverso o come cambiarlo quando si chiama la funzione da una query, se non con una column comando per impostare la larghezza, usando un alias qui per semplificare leggermente le cose:

set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;

Ma puoi anche ottenere l'output desiderato chiamando la funzione in modo diverso; con una variabile e un blocco anonimo (o execute come abbreviazione):

variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc

Bene, quasi come lo vuoi tu; la prima riga dell'output è il nome della variabile anziché l'elenco delle funzioni/parametri; ma le colonne del cursore non sono avvolte:

anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1                   COLUMN2 COLUMN3    COLUMN4    COLUMN5    
------------------------- ------- ---------- ---------- ---------- 
18-NOV-14                 text    some_data1 some_data2 some_data3 

Puoi anche eseguire la tua funzione dall'editor di codice (piuttosto che dal foglio di lavoro), che genera un blocco anonimo per te; quando fai clic sulla freccia Esegui (o premi control-F10) ottieni una finestra di dialogo come questa:

E dopo averlo eseguito, ottieni una scheda "Variabili di output" nella parte inferiore della finestra principale che mostra l'output del cursore in una griglia.

Puoi anche vedere la visualizzazione della griglia quando esegui select my_function(...) from dual . Il cursore va nella normale finestra "risultato della query" ma non in una forma molto amichevole, apparendo come qualcosa del tipo:

{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}

Ma se fai doppio clic su un valore, vedrai il simbolo di una matita gialla all'estrema destra della colonna e facendo clic su quello mostrerai quel cursore nella sua griglia.

Personalmente preferisco la print opzione nell'output dello script, ma comunque uso raramente i display gird.