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.