実行中のSQLをPLSQLで確認する方法を教えてください
PL/SQLでは、DBMS_UTILITY.FORMAT_CALL_STACK関数とDBMS_UTILITY.FORMAT_ERROR_BACKTRACE関数を使用して実行中のSQLを表示することができます。以下にサンプルコードを示します。
DECLARE
v_sql VARCHAR2(32767);
BEGIN
-- 获取正在执行的SQL
v_sql := DBMS_UTILITY.FORMAT_CALL_STACK;
-- 打印正在执行的SQL
DBMS_OUTPUT.PUT_LINE(v_sql);
-- 获取错误的SQL
v_sql := DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
-- 打印错误的SQL
DBMS_OUTPUT.PUT_LINE(v_sql);
END;
上記の例ではDBMS_UTILITY.FORMAT_CALL_STACK関数は現に実行中のSQLを返し、DBMS_UTILITY.FORMAT_ERROR_BACKTRACE関数は最近のエラー情報中のSQLを返します。必要に応じてこれらのSQLをいずれかの変数に格納して、更なる処理や出力に用いることができます。