PLSQLで過去のエクゼキューション ステートメントを表示する方法

PL/SQLでは、DBMS_SQL.RETURN_RESULTファンクションを使用することで、過去に実行された文を確認することができます。そのためのサンプルプログラムを以下に示します。

DECLARE
stmt VARCHAR2(200);
c    NUMBER;
res  SYS_REFCURSOR;
rec  DBMS_SQL.DESC_TAB;
cnt  INTEGER := 0;
BEGIN
-- 执行历史语句
stmt := 'SELECT * FROM your_table';
-- 执行语句
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, stmt, DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_COLUMN_CURSOR(c, 1);
-- 获取结果
res := DBMS_SQL.EXECUTE_AND_FETCH(c);
-- 获取历史语句
DBMS_SQL.DESCRIBE_COLUMNS(c, cnt, rec);
FOR i IN 1..cnt LOOP
DBMS_OUTPUT.PUT_LINE('Column ' || i || ': ' || rec(i).col_name);
END LOOP;
-- 关闭游标
DBMS_SQL.CLOSE_CURSOR(c);
END;

上の例では、次に DBMS_SQL.OPEN_CURSOR 関数でカーソルを開いています。次に、DBMS_SQL.PARSE 関数でヒストリ文を解析して実行します。次に、DBMS_SQL.DEFINE_COLUMN_CURSOR 関数で列カーソルを定義し、DBMS_SQL.EXECUTE_AND_FETCH 関数で結果を取得します。最後に、DBMS_SQL.DESCRIBE_COLUMNS 関数で、ヒストリ文の列情報を得ています。

なお、上記のサンプルはSELECT文に対してのみ有効です。INSERT、UPDATE、DELETEなどの別の種類の文を実行したい場合は、適宜コードを変更する必要があります。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds