在Oracle 12c中這可以使用DBMS_SQL.RETURN_RESULT
來實現:
create or replace procedure get_data
c1 SYS_REFCURSOR;
c2 SYS_REFCURSOR;
BEGIN
OPEN c1 FOR
select 'First result' as what, 1 as some_number from dual;
DBMS_SQL.RETURN_RESULT(c1);
OPEN c2 FOR
select 'Second result' as what, 2 as second_column, 3 as third_column
from dual;
DBMS_SQL.RETURN_RESULT(c2);
END;
/
然後運行它:
exec get_data;
並且例如SQL * Plus會顯示:
SQL> exec get_data;
PL/SQL procedure successfully completed.
ResultSet #1
WHAT SOME_NUMBER
------------ -----------
First result 1
1 row selected.
ResultSet #2
WHAT SECOND_COLUMN THIRD_COLUMN
------------- ------------- ------------
Second result 2 3
1 row selected.
SQL>
其他SQL客戶端可能以不同方式顯示結果。
甲骨文沒有這樣的運氣。你需要使用'dbms_output.put_line()'(或類似的東西)來獲得輸出。如果你想打印查詢結果,那麼你需要遍歷結果。 –
@GordonLinoff這個dbms_output.put_line()將只顯示一個結果,還是可以顯示多個結果?此外,謝謝你編輯我的問題,我必須學會如何做到這一點。 – itsmePJ
@itsmePJ您是否意味着您想要在執行過程時返回多行? – user75ponic