Nie odpowiadam bezpośrednio na pytanie - nie wiem, dlaczego zachowanie jest inne ani jak je zmienić podczas wywoływania funkcji z zapytania, innego niż za pomocą column
polecenie, aby ustawić szerokość, używając aliasu, aby nieco uprościć:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Ale możesz również uzyskać żądane dane wyjściowe, wywołując funkcję w inny sposób; ze zmienną i anonimowym blokiem (lub execute
jako skrót):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Cóż, prawie tak, jak chcesz; pierwszy wiersz wyjścia to nazwa zmiennej, a nie lista funkcji/parametrów; ale kolumny kursora nie są zawinięte:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
Możesz także uruchomić swoją funkcję z edytora kodu (a nie z arkusza roboczego), który generuje dla Ciebie anonimowy blok; po kliknięciu strzałki uruchamiania (lub naciśnięciu Ctrl-F10) pojawi się takie okno dialogowe:
A po uruchomieniu pojawi się zakładka „zmienne wyjściowe” na dole głównego okna, która pokazuje wynik kursora w siatce.
Możesz także zobaczyć widok siatki po uruchomieniu select my_function(...) from dual
. Kursor przechodzi do normalnego okna „wyników zapytania”, ale nie w bardzo przyjaznej formie, wyglądając jako coś takiego:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Ale jeśli klikniesz dwukrotnie wartość, zobaczysz symbol żółtego ołówka po prawej stronie kolumny, a kliknięcie spowoduje wyświetlenie tego kursora we własnej siatce.
Osobiście wolę print
w wynikach skryptu, ale i tak rzadko używam ekranów przepaskowych.