Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

A saída do script do SQL Developer trunca a largura de sys_refcursor


Não respondendo diretamente à pergunta - não sei por que o comportamento é diferente ou como alterá-lo ao chamar a função de uma consulta, exceto com uma column comando para definir a largura, usando um alias aqui para simplificar um pouco as coisas:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;

Mas você também pode obter a saída desejada chamando a função de forma diferente; com uma variável e um bloco anônimo (ou execute como abreviação):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc

Bem, quase como você quer; a primeira linha da saída é o nome da variável em vez da lista de funções/parâmetros; mas as colunas do cursor não são quebradas:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1                   COLUMN2 COLUMN3    COLUMN4    COLUMN5    
------------------------- ------- ---------- ---------- ---------- 
18-NOV-14                 text    some_data1 some_data2 some_data3 

Você também pode executar sua função a partir do editor de código (em vez da planilha), que gera um bloco anônimo para você; quando você clica na seta de execução (ou pressiona control-F10), você obtém uma caixa de diálogo como esta:



E depois de executá-lo, você obtém uma guia 'variáveis ​​de saída' na parte inferior da janela principal, que mostra a saída do cursor em uma grade.

Você também pode ver a visualização em grade ao executar select my_function(...) from dual . O cursor vai para a janela normal de 'resultado da consulta', mas não de uma forma muito amigável, aparecendo como algo como:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}

Mas se você clicar duas vezes em um valor, verá um símbolo de lápis amarelo na extremidade direita da coluna e clicar nele mostra o cursor em sua própria grade.

Pessoalmente, prefiro o print opção na saída do script, mas raramente uso as telas gird de qualquer maneira.