3
我目前正在使用Oracle Apex的應用程序,該應用程序正在用作數據庫以保存電纜記錄。在執行觸發期間'數字或值錯誤'
當在數據庫組件被刪除時,一個PL/SQL觸發被執行,刪除任何關聯的組件從另一個表(PORT),並設置爲0。
端口引用觸發似乎很好地工作對於大多數組件我試圖刪除,但給我看別人一個「數字或值錯誤」,我很努力找出原因(如下圖所示)
觸發執行容貌像這樣:
create or replace trigger "COMPONENT_TRIGPORT"
AFTER delete
on "COMPONENT"
for each row
declare
TYPE portType IS TABLE OF PORT%ROWTYPE;
port_arr portType;
begin
DELETE FROM PORT
where PORT.COMPONENT_ID = :old.COMPONENT_ID
RETURNING PORT_ID, PORT_NUMBER, COMPONENT_ID, CONNECTOR_ID, PORT_TYPE
BULK COLLECT INTO port_arr;
begin
FOR i IN port_arr.FIRST .. port_arr.LAST
LOOP
update PORT
set PORT.CONNECTOR_ID = 0
where PORT.CONNECTOR_ID = port_arr(i).CONNECTOR_ID;
END LOOP;
end;
end;
我知道,讓我錯誤的行是
where PORT.COMPONENT_ID = :old.COMPONENT_ID
但我不明白爲什麼它在某些情況下,罰款在別人!
謝謝,完美的作品! 還在繼續處理PL/SQL,所以感謝您的幫助和明確的解釋。 –