0

結果を再利用して別のテーブルに結合できるように、select ステートメントの結果を保存するにはどうすればよいですか? これもカーソル内になります。

以下はいくつかの疑似コードです。この例では、Select ステートメントをシンプルにしていますが、実際には複数の結合を含む長いクエリです。2 つの異なるテーブルに結合するには、同じ SQL を 2 回使用する必要があり、非常に長く、将来変更される可能性があるため、再利用できるようにしたいと考えています。

ビューを作成してselectステートメントの結果を保存しようとしましたが、カーソルループ内でビューを作成できないようです。試してみると、「シンボル「CREATE」エラーが発生しました」というエラーが表示されます。

DECLARE TYPE cur_type IS REF CURSOR;
CURSOR PT_Cursor IS

    SELECT * FROM Table1

    PT_Cursor_Row   PT_Cursor%ROWTYPE;

BEGIN
 OPEN PT_Cursor;

 LOOP
    FETCH PT_Cursor INTO PT_Cursor_Row;
    EXIT WHEN PT_Cursor%NOTFOUND;

    Select ID From Table2 --this is actually a long complext query
        INNER JOIN Table3 ON Table2.ID = Table3.ID
    WHERE Table2.ID = PT_Cursor_Row.ID

    Select * From Table2 --this is actually a long complext query
        LEFT JOIN Table4 ON Table2.ID = Table4.ID
    WHERE Table2.ID = PT_Cursor_Row.ID                               

END LOOP;

 CLOSE PT_Cursor;
END; 
4

2 に答える 2

3

クエリからの結果を保存する 1 つの方法は、一時テーブルを使用することです。この質問には、それらの作成方法を説明する短い回答がありますが、使用方法を説明する長い回答がここにあります。

于 2013-05-31T09:00:45.953 に答える