Top / TIPS / ORACLEで一時表をデバッグ

ORACLE8iから一時表をサポートしていますが、何か不具合があったとき、内容がほかのセションから見れないので、デバッグするのが難しいです。
そんな時のために、一時表モドキを作っておくとデバッグしやすいです。
簡単に説明すると

temp.gif

のようなテーブルを作成します。

CREATE TABLE BASE_DATA
(
   SESSID          NUMBER       DEFAULT USERENV('SESSIONID') NOT NULL,
   KEY01           VARCHAR(2)   NOT NULL,
   ITM01           NUMBER(6,0),
   PRIMARY KEY (SESSID, KEY01)
)

SESSID が、ミソです。(^_^;) Default 値を、セションIDにしてます。
この項目は、プログラムから、一切使用しません。

次に、実際に一時表として使う、ビューを作成します。

CREATE OR REPLACE VIEW TEMP_DATA
AS
   SELECT
            KEY01
           ,ITM01
    FROM   BASE_DATA
    WHERE
           SESSID      = USERENV('SESSIONID')

さて、どうなるかというと、TEMP_DATA というテーブルは(実際は、View ですが)セションごとに、ユニークになっているんですね。

SELECT してみましょう。

SELECT * FROM TEMP_DATA

実際には、次のような操作が行われます。

SELECT KEY01, ITM01 FROM BASE_DATA
      WHERE SESSID = USERENV('SESSIONID')

DELETE してみます。

DELETE FROM TEMP_DATA

実際には、次のような操作が行われます。

DELETE FROM BASE_DATA
      WHERE SESSID = USERENV('SESSIONID')

とまあ、こういうぐあいに、一時表モドキが完成しました。

あとは適宜コミットしてやれば、他のセションから TMP_DATA の内容を確認しながらデバッグすることができます。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-31 (土) 13:20:47 (2795d)