1
有沒有一種方法可以跟蹤使用dbms_sql.execute執行了哪些代碼?驗證dbms_sql.execute執行代碼PL/SQL
例如,如果我運行此查詢:
DECLARE
cursor_name INTEGER;
rows_processed INTEGER;
BEGIN
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'SELECT * FROM dual WHERE 2 = :x' ,DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', 2);
rows_processed := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;
我應該能夠找到的結果:
SELECT * FROM dual WHERE 2 = 2
我試圖尋找在V $ SQL/V $ sql_bind_capture和dba_hist_sqltext/dba_hist_sqlbind,但似乎不可靠,因爲使用不同的綁定變量運行相同的sql會導致具有相同sql_id的sql被覆蓋。
太棒了,這似乎工作。謝謝。 –