2004년도 초에도 db2 의 트리거에서 sp 호출이 안되서 고민 했는데
올해도 그 고민에 빠 봄윱求?
8 로 올라 오면서 sp 호출 방법이 있나요..?
프로시져에서 에러값 처리는 했는데..
이놈의 트리거가 ㅠ.ㅠ
유명한 고수님 이글을 읽어 주십시요..
It is possible to call a stored procedure from a trigger.
Following is my experience.
Caution :
- A procedure must not include commits or rollbacks.
- After A trigger issues DML against a table, the procedure called from a trigger must not access same table.
- To make one transaction with trigger and stored procedure, trigger should check SP's condition and raise exceptions in case of error.
From trigger CALL WFS.CLIENT_LEVEL(N.CLI_COMPANY_CODE,N.CLI_NBR,O.CLI_NBR,N.CLI_PARENT_CLIENT_NBR,O.CLI_PARENT_CLIENT_NBR,TYPE,rst,rsc); check rst or rsc to raise SQL exception for exception , use "SIGNAL SQLSTATE '85101' (rst);" From SP set rst,rsc for SQLSTATE and SQLCODE
Example :
CREATE TRIGGER WFS.CLIENT_INSERT AFTER INSERT ON WFS.CLIENT REFERENCING NEW AS n FOR EACH ROW BEGIN ATOMIC DECLARE rst CHAR(5) DEFAULT '00000'; DECLARE rsc INTEGER DEFAULT 0; CALL WFS.CLIENT_LEVEL(rst,rsc); VALUES(CASE WHEN rsc < 0 THEN RAISE_ERROR('70001','PROC CALL failed') ELSE 'AAA' END); END@
답변 주셔서 감사합니다.
근데 이건했던건데요 ㅠ.ㅠ
책이나 자료에 나와잇는건 거의 다 해봤고.
그래서 꽁수로 리턴값 처리는 해봣는데..
이상하게 트리거에서 sp 호출이 안되요..
서버장비때문에 그런가.? 아님 세팅이 잘못되서인가..?
as400 이란 장비 거든요... 튜닝 하면 된다고는 하는데.
똑같은 경우를 격어봐서러.. 쩝