Oracle
 sql >> Base de données >  >> RDS >> Oracle

La sortie du script SQL Developer tronque la largeur de sys_refcursor

Ne répondant pas directement à la question - je ne sais pas pourquoi le comportement est différent ou comment le changer lors de l'appel de la fonction à partir d'une requête, autrement qu'avec une column commande pour définir la largeur, en utilisant ici un alias pour simplifier légèrement les choses :

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

Mais vous pouvez également obtenir la sortie souhaitée en appelant la fonction différemment; avec une variable et un bloc anonyme (ou execute en raccourci):

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

Eh bien, presque comme vous le voulez; la première ligne de la sortie est le nom de la variable plutôt que la liste des fonctions/paramètres ; mais les colonnes du curseur ne sont pas enveloppées :

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

Vous pouvez également exécuter votre fonction à partir de l'éditeur de code (plutôt que de la feuille de calcul), qui génère un bloc anonyme pour vous ; lorsque vous cliquez sur la flèche d'exécution (ou appuyez sur Ctrl + F10), vous obtenez une boîte de dialogue comme celle-ci :

Et après l'avoir exécuté, vous obtenez un onglet "variables de sortie" en bas de la fenêtre principale qui affiche la sortie du curseur dans une grille.

Vous pouvez également voir la vue de la grille lorsque vous exécutez select my_function(...) from dual . Le curseur va dans la fenêtre normale de "résultat de la requête", mais pas sous une forme très conviviale, apparaissant comme :

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

Mais si vous double-cliquez sur une valeur, vous voyez un symbole de crayon jaune à l'extrême droite de la colonne, et en cliquant dessus, le curseur apparaît dans sa propre grille.

Personnellement je préfère le print option dans la sortie du script mais j'utilise rarement les affichages gird de toute façon.