sql >> Databasteknik >  >> RDS >> Oracle

SQL Developer-skriptutgång trunkerar sys_refcursor-bredden

Svarar inte direkt på frågan - jag vet inte varför beteendet är annorlunda eller hur man ändrar det när funktionen anropas från en fråga, annat än med en column kommando för att ställa in bredden, med hjälp av ett alias här för att förenkla saker något:

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

Men du kan också få den utdata du vill ha genom att anropa funktionen annorlunda; med en variabel och ett anonymt block (eller execute som stenografi):

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

Nåväl, nästan som du vill ha det; den första raden i utdata är variabelnamnet snarare än funktion/parameterlistan; men markörkolumnerna är inte lindade:

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

Du kan också köra din funktion från kodredigeraren (snarare än kalkylbladet), vilket genererar ett anonymt block åt dig; när du klickar på körpilen (eller trycker på kontroll-F10) får du en dialogruta så här:

Och efter att ha kört det får du en "output variables"-flik längst ner i huvudfönstret som visar markörens utdata i ett rutnät.

Du kan också se rutnätsvyn när du kör select my_function(...) from dual . Markören går in i det normala "frågeresultat"-fönstret men inte i en mycket vänlig form, visas som något i stil med:

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

Men om du dubbelklickar på ett värde så ser du en gul pennsymbol längst till höger i kolumnen, och om du klickar på den visas markören i sitt eget rutnät.

Personligen föredrar jag print alternativet i skriptutdata men jag använder sällan gird-displayerna ändå.




  1. Hur infogar man i samma tabell i MySQL?

  2. Använda DMV ( Dynamic Management View ) och DMF ( Dynamic Management Function ) | SQL Server Performance Felsökning -4

  3. Data med öppen källkod växer upp:Välj MySQL, NoSQL eller båda

  4. Varför är aggregerade funktioner inte tillåtna i where-satsen