在PL/SQL中,可以通過使用DBMS_UTILITY.GET_PARAMETER_VALUE
函數來獲取未保存的SQL。
以下是一個示例:
DECLARE
v_sql_text CLOB;
BEGIN
v_sql_text := DBMS_UTILITY.GET_PARAMETER_VALUE('cursor_sharing');
DBMS_OUTPUT.PUT_LINE('未保存的SQL: ' || v_sql_text);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('無法獲取未保存的SQL');
END;
在上面的示例中,我們使用DBMS_UTILITY.GET_PARAMETER_VALUE
函數來獲取名為cursor_sharing
的參數值,它包含了未保存的SQL。如果成功獲取到參數值,將會將其打印出來。如果無法獲取到參數值,則會打印出錯誤消息。
請注意,未保存的SQL只能在當前會話中獲取到,如果想要在其他會話中獲取到未保存的SQL,可以使用V$OPEN_CURSOR
視圖來查詢。
SELECT a.sql_text
FROM v$open_cursor a
WHERE a.sid = <會話ID>
AND a.sql_id = '<SQL_ID>';
在上面的示例中,我們使用V$OPEN_CURSOR
視圖來獲取指定會話ID和SQL ID的未保存的SQL文本。您需要替換<會話ID>
和<SQL_ID>
為實際的值。
希望這可以幫助到你!