[pgsql-jp: 34236] PL/pgsqlでプログラム内テーブルを作成したい

oguri oguri @ kawatetsu-systems.com
2004年 11月 2日 (火) 18:27:33 JST


はじめて投稿させて頂きます小栗です。
PL/pgsqlについての質問です。

複数表から読んだ結果よりプログラム内テーブルを作成したいのですが
どなたか良いアイディアはありませんでしょうか?

<背景>
PL/pgsqlで作成する元になったプログラムが別言語でプログラム内テーブル
を使用しているため、可能な限りロジックを変更したくない。

<現在の状況>
現在は、以下のように行っているが要求されるレスポンスにならない。
同一セッション内で複数回CALLするため、作成した一時テーブルを削除するが
PL/pgsqlは、削除前のOIDを参照するため動的SQLでの参照になる。

BEGIN
--**(1)一時テーブルを作成して
CREATE TEMP TABLE taPROC(       --*lgalc 6step
    taIDX   INTEGER,
    SEQ     NUMERIC,
    LINE    CHAR(1),
    TP      CHAR(2)
);

--**(2)動的SQLでINSERTし
vSQLstmt := ''INSERT INTO taLIST ( '';
--*中略
EXECUTE vSQLstmt;

--**(3)動的SQLでSELECTしている。
OPEN taLIST_CURSOR FOR EXECUTE vSQLstmt;
LOOP
    FETCH taLIST_CURSOR INTO taLIST_LINE, taLIST_TP, taLIST_P_PDATE,
--*中略

--**(4)処理終了で削除
DROP TABLE taPROC;

=以上=



pgsql-jp メーリングリストの案内