ソース表からデータを取得してターゲット表に挿入するPL/SQLプロシージャを作成する必要があります。ソース表には、ITEM1
列、ITEM2
列、および列がありSRC_CODE
ます。SRC_CODE
列には、SQL Select ステートメントである文字列が含まれていますSELECT KEY FROM SOMETABLE WHERE DAY = V_DAY
。したがって、どうにかしてSRC_CODE
列内のステートメントを実行しV_DAY
、select ステートメント内にその変数を設定する必要があります。結果のKEY
値は、ソース テーブルと共に、ITEM1
およびITEM2
ソース テーブルからテーブルに入りTARGET
ます。
プロセスに論理的にアプローチすると、ソース テーブルから行を取得SRC_CODE
し、コレクションに実行する必要があることがわかります。次に、コレクションからそれぞれを取得し、それをandKEY
に結び付けて、 、、およびをターゲット テーブルに挿入します。プログラミングの観点からこれを行う方法がわかりません。ITEM1
ITEM2
KEY
ITEM
ITEM2
以下は、少なくともターゲットにキー値を入力しようとする私の試みですが、無効な識別子エラーが発生したため、役に立ちませんでした。誰かが私が必要とするものを得るためにこれを修正/拡張できるなら、それは大歓迎です:
CREATE OR REPLACE PROCEDURE POPULATETARGET IS
TYPE KEYS_T IS TABLE OF SOMETABLE.KEY%TYPE;
L_KEYS KEYS_T;
V_DAY NUMBER;
SRC_CODE_FETCH VARCHAR2(200);
V_SRC_CODE VARCHAR2 (4000);
RC SYS_REFCURSOR;
BEGIN
V_DAY := 20150826;
SRC_CODE_FETCH := 'SELECT SRC_CODE FROM SOURCE';
OPEN RC FOR SRC_CODE_FETCH;
LOOP
FETCH RC INTO V_SRC_CODE;
EXIT WHEN RC%NOTFOUND;
EXECUTE IMMEDIATE V_SRC_CODE BULK COLLECT INTO L_KEYS USING V_DAY;
FORALL x IN L_KEYS.FIRST..L_KEYS.LAST
INSERT INTO TARGET VALUES L_KEYS(x);
END LOOP;
CLOSE RC;
END;