我是觸發器的新手。 我創建低於觸發:觸發器中的UTL_FILE.FCOPY問題
CREATE OR REPLACE TRIGGER ac01_control_trigg
AFTER INSERT ON AC01_CONTROL_TEST
FOR EACH ROW
DECLARE
BEGIN
IF :NEW.cur_pgm_name = 'LSN' AND :NEW.nxt_pgm_name ='MD' AND :NEW.file_status='RD' THEN
UTL_FILE.Fcopy (:NEW.FILE_PATH,:NEW.FILE_NAME,:NEW.FILE_PATH,'CP.txt');
INSERT INTO AC1_CONTROL_TEST
(FILE_NAME, FILE_PATH,CUR_PGM_NAME,NXT_PGM_NAME,FILE_STATUS)
VALUES (:NEW.FILE_NAME, :NEW.FILE_PATH,:NEW.CUR_PGM_NAME,'MD_MPS',:NEW.FILE_STATUS);
END IF;
END ac01_control_trigg;
在創建觸發器沒有編譯錯誤。 但是當我試圖在表中插入一個條目我收到以下錯誤。
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 258
ORA-06512: at "SYS.UTL_FILE", line 1167
ORA-06512: at "CNGDB18.AC01_CONTROL_TRIGG", line 4
ORA-04088: error during execution of trigger 'CNGDB18.AC01_CONTROL_TRIGG'
任何人都可以請幫忙嗎?
編輯:insert語句低於:
INSERT INTO AC01_CONTROL_TEST
(FILE_NAME, FILE_PATH, CUR_PGM_NAME, NXT_PGM_NAME, FILE_STATUS)
VALUES
('SSMS_FSMS_ID000386_T20081224153437_OFWPAC_OMG011.DAT', '/dhiusr3/sub/cng/cngwrk18/var/m3g/projs/up/data/MAF_SMS/20091216/13/15490000/', 'LSN', 'MD', 'RD');
在UNIX上:
0> pwd
/dhiusr3/sub/cng/cngwrk18/var/m3g/projs/up/data/MAF_SMS/20091216/13/15490000
看看我在下面包含的鏈接中的例子,可能不應該包含FILE_PATH中的最後一個斜槓?這就是假定名稱中的文件存在於dir中。 – MadMurf 2010-02-26 05:35:06
你的問題與UTL_FILE不是觸發器有關。您的代碼在SQL * Plus提示符處運行的PL/SQL塊中仍然會失敗。 – APC 2010-02-26 06:17:55