所以我有一个存储过程将数据从一个表传输到另一个表。但是,我意识到,如果我不截断第一个表(xml_hours_load),当我最终将此存储过程安排到常规作业时,我可能反复插入相同的数据。如何在加载第二个表后截断第一个表? (xml_hours_Load_2)。我已经尝试在插入第二个表之后放置截断,但pl / sql会抛出错误...
CREATE OR REPLACE PROCEDURE insertXMLDataTransfer(
vROW_ID in xml_hours_load_2.ROW_ID%TYPE,
vUTC_Offset in xml_hours_load_2.UTC_OFFSET%TYPE,
vPROCESSED in xml_hours_load_2.PROCESSED%TYPE,
vDATA_DATE in xml_hours_load_2.Data_Date%TYPE,
vHR_UTC in xml_hours_load_2.HR_UTC%TYPE,
vVALUE_TX in xml_hours_load_2.VALUE_TX%TYPE,
vHR in xml_hours_load_2.HR%TYPE,
vHR_NUM in xml_hours_load_2.HR_NUM%TYPE,
vDATA_CODE in xml_hours_load_2.DATA_CODE%TYPE,
vDATA_TYPE in xml_hours_load_2.DATA_TYPE%TYPE
)
AS
BEGIN
INSERT INTO xml_hours_load_2(ROW_ID, UTC_OFFSET, PROCESSED, DATA_DATE, HR_UTC, VALUE_TX, HR, HR_NUM, DATA_CODE, DATA_TYPE)
VALUES (vROW_ID, vUTC_Offset, vPROCESSED, vDATA_DATE, vHR_UTC, vVALUE_TX, vHR, vHR_NUM, vDATA_CODE, vDATA_TYPE);
TRUNCATE table xml_hours_load;
COMMIT;
END;
/
DECLARE
vROW_ID xml_hours_load_2.ROW_ID%TYPE;
vUTC_Offset xml_hours_load_2.UTC_OFFSET%TYPE;
vPROCESSED xml_hours_load_2.PROCESSED%TYPE;
vDATA_DATE xml_hours_load_2.Data_Date%TYPE;
vHR_UTC xml_hours_load_2.HR_UTC%TYPE;
vVALUE_TX xml_hours_load_2.VALUE_TX%TYPE;
vHR xml_hours_load_2.HR%TYPE;
vHR_NUM xml_hours_load_2.HR_NUM%TYPE;
vDATA_CODE xml_hours_load_2.DATA_CODE%TYPE;
vDATA_TYPE xml_hours_load_2.DATA_TYPE%TYPE;
CURSOR cXMLHoursCursor IS (SELECT ROW_ID, UTC_OFFSET, PROCESSED, DATA_DATE, HR_UTC, VALUE_TX, HR, HR_NUM, DATA_CODE, DATA_TYPE FROM xml_hours_load);
BEGIN
For v in cXMLHoursCursor LOOP
insertXMLDataTransfer(v.ROW_ID, v.UTC_OFFSET, v.PROCESSED, v.DATA_DATE, v.HR_UTC, v.VALUE_TX, v.HR, v.HR_NUM, v.DATA_CODE, v.DATA_TYPE);
COMMIT;
END LOOP;
END;
/
答案 0 :(得分:1)
你不能直接在PL / SQL中截断它;你必须使用动态SQL,即
your_first_query;
execute immediate ('truncate table xml_hours_load');
your_second_query;
<强> [编辑] 强>
说你有错误(必须申报IMMEDIATE),好吧 - 你做错了什么;看看这个例子:
SQL> create table test (id number);
Table created.
SQL> begin
2 execute immediate ('truncate table test');
3 end;
4 /
PL/SQL procedure successfully completed.
SQL>
如果您可以编辑帖子并向我们展示您的所作所为,则可能更容易进一步提供帮助。