sql >> Database >  >> RDS >> Oracle

De uitvoer van het SQL Developer-script kapt de breedte van sys_refcursor af

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.




  1. 0 tot 60 :Overschakelen naar indirecte checkpoints

  2. Hoe de IF-instructie werkt in SQL Server

  3. Is het mogelijk om een ​​SQLPLUS-script uit te voeren op een bestand dat is gecodeerd als UTF-8 met stuklijst?

  4. Werken uw medewerkers op afstand? Hier leest u hoe u uw gegevens veilig kunt houden.