我需要構建一個從源表中獲取數據並將其插入到目標表中的PL/SQL過程。源表有ITEM1
列,ITEM2
列和SRC_CODE
列。 SRC_CODE
列包含一個SQL Select語句的字符串,即SELECT KEY FROM SOMETABLE WHERE DAY = V_DAY
。所以,我需要執行SRC_CODE
列中的語句,並在select語句中填充V_DAY
變量。生成的KEY
值以及來自源表的ITEM1
和ITEM2
將進入TARGET
表。如何處理包含需要執行的SQL語句字符串的表列?
邏輯上接近的過程中,我猜我需要一個行從源表,執行SRC_CODE
到一個集合,然後乘坐從收集每個KEY
和領帶回給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;