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.