sql >> Base de Datos >  >> RDS >> Oracle

La salida del script de SQL Developer trunca el ancho de sys_refcursor

No respondo directamente a la pregunta:no sé por qué el comportamiento es diferente o cómo cambiarlo al llamar a la función desde una consulta, que no sea con una column comando para establecer el ancho, usando un alias aquí para simplificar un poco las cosas:

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

Pero también puede obtener el resultado que desea llamando a la función de manera diferente; con una variable y un bloque anónimo (o execute como abreviatura):

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

Bueno, casi como lo quieres; la primera línea de la salida es el nombre de la variable en lugar de la lista de funciones/parámetros; pero las columnas del cursor no están envueltas:

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

También puede ejecutar su función desde el editor de código (en lugar de la hoja de trabajo), que genera un bloque anónimo para usted; cuando hace clic en la flecha de ejecución (o presiona control-F10), obtiene un cuadro de diálogo como este:

Y después de ejecutarlo, obtiene una pestaña de 'variables de salida' en la parte inferior de la ventana principal que muestra la salida del cursor en una cuadrícula.

También puede ver la vista de cuadrícula cuando ejecuta select my_function(...) from dual . El cursor entra en la ventana normal de 'resultado de la consulta' pero no en una forma muy amigable, apareciendo como algo como:

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

Pero si hace doble clic en un valor, verá un símbolo de lápiz amarillo en el extremo derecho de la columna y, al hacer clic, verá ese cursor en su propia cuadrícula.

Personalmente prefiero el print opción en la salida del script, pero rara vez uso las pantallas de gird de todos modos.