CREATE OR REPLACE PROCEDURE SP_PROC (
V_P IN VARCHAR2 DEFAULT NULL)
AS
V_DATE TIMESTAMP:=SYSDATE;
V_TAB VARCHAR2(10);
BEGIN
IF V_P = 'P' THEN
SELECT CUR_DATE, TGT_TAB
INTO V_DATE, V_TAB
FROM TEMP_L
WHERE P='P'
AND END_TIME IS NULL
AND COMPLETE_IND IS NULL;
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||V_TAB;
IF V_TAB = 'TEMP_V' THEN
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
ELSE
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_V';
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
END IF;
IF V_TAB = 'TEMP_T' THEN
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
ELSE
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_T';
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
END IF;
END;
我上面的過程有一個IN參數,它採用'P'等值。如果輸入值爲'P' ,則將表CUR_DATE和TGT_TAB從表TEMP_L中的兩個單獨變量V_DATE和V_TAB中選擇,其中兩個列返回空值。對於返回true的記錄,然後應用這個邏輯,如果變量V_TAB從TGT_TAB獲取記錄,='TEMP_V'(我意識到它可能會返回多於一條記錄和不同的記錄,這就是爲什麼我要求幫助),然後插入.. else insert into ..我怎樣才能調整我的程序繞過確切的獲取返回多個請求的數
現在問題在於,我的SELECT INTO變量只能保存1個值,有時可能會有多個記錄在TGT_TAB中返回空值和不同值。有時它會是TEMP_V,有時會是TEMP_T等。
如何更改我的腳本以便成功運行腳本的底部部分? 由於會返回多個記錄,因此我的變量將返回錯誤:精確提取返回多個請求的數字。我嘗試使用批量收集,但收集只能在循環中工作,我不知道如何將其應用於我的以下要求。我需要基於返回值「TEMP_V」,「TEMP_T」等基本上插入它們。
IF V_TAB = 'TEMP_V' THEN
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
ELSE
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_V';
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
END IF;
IF V_TAB = 'TEMP_T' THEN
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
ELSE
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_T';
INSERT INTO TEMP_V
SELECT V FROM REP_TAB
END IF;
任何幫助都可以。
我將使用最早的CUR_DATE。它將如下所示。 SELECT CUR_DATE,TGT_TAB INTO V_DATE,V_TAB FROM TEMP_L WHERE P = 'P' AND END_TIME IS NULL AND COMPLETE_IND IS NULL AND START_TIME =(SELECT MIN(CUR_DATE) FROM TEMP_L WHERE END_TIME IS NULL AND COMPLETE_IND是NULL AND PARA ='P'); 你能舉一個例子說明它是如何完成的嗎? – JohnD