Không trực tiếp trả lời câu hỏi - Tôi không biết tại sao hành vi lại khác hoặc làm cách nào để thay đổi nó khi gọi hàm từ một truy vấn, khác với column
lệnh để đặt chiều rộng, sử dụng bí danh ở đây để đơn giản hóa mọi thứ một chút:
set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;
Nhưng bạn cũng có thể nhận được đầu ra bạn muốn bằng cách gọi hàm theo cách khác; với một biến và một khối ẩn danh (hoặc execute
viết tắt):
variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc
Chà, gần như bạn muốn; dòng đầu tiên của đầu ra là tên biến chứ không phải là danh sách hàm / tham số; nhưng các cột con trỏ không được bao bọc:
anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN5
------------------------- ------- ---------- ---------- ----------
18-NOV-14 text some_data1 some_data2 some_data3
Bạn cũng có thể chạy chức năng của mình từ trình soạn thảo mã (thay vì trang tính), chức năng này sẽ tạo một khối ẩn danh cho bạn; khi bạn nhấp vào mũi tên chạy (hoặc nhấn control-F10), bạn sẽ nhận được hộp thoại như sau:
Và sau khi chạy nó, bạn sẽ nhận được một tab 'biến đầu ra' ở cuối cửa sổ chính hiển thị đầu ra con trỏ trong lưới.
Bạn cũng có thể thấy chế độ xem lưới khi bạn chạy select my_function(...) from dual
. Con trỏ đi vào cửa sổ 'kết quả truy vấn' bình thường nhưng không ở dạng thân thiện lắm, xuất hiện như sau:
{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}
Nhưng nếu bạn nhấp đúp vào một giá trị thì bạn sẽ thấy biểu tượng bút chì màu vàng ở ngoài cùng bên phải của cột và nhấp vào đó sẽ hiển thị con trỏ đó trong lưới của chính nó.
Cá nhân tôi thích print
trong đầu ra tập lệnh nhưng dù sao thì tôi cũng hiếm khi sử dụng các màn hình gird.