Sql 在触发器中调用过程!DB2

Sql 在触发器中调用过程!DB2,sql,triggers,db2,procedure,Sql,Triggers,Db2,Procedure,您好,我已经创建了一个程序和一个触发器,这两个程序的目的是通知我的调度员,当他们使用的资产中有一颗死卫星时。 这是我的程序 CREATE OR REPLACE PROCEDURE DEAD_TRAILERS ( OUT oMSG_TYPE INTEGER, OUT oERROR_MSG VARCHAR(255) ) LANGUAGE SQL SPECIFIC SP_DEAD_TRAILERS MAIN: BEGIN --// 1 - warning message SET oMSG

您好,我已经创建了一个程序和一个触发器,这两个程序的目的是通知我的调度员,当他们使用的资产中有一颗死卫星时。 这是我的程序

CREATE OR REPLACE PROCEDURE DEAD_TRAILERS (
OUT oMSG_TYPE INTEGER, 
OUT oERROR_MSG VARCHAR(255)
)
LANGUAGE SQL
SPECIFIC SP_DEAD_TRAILERS
MAIN: BEGIN 
  --// 1 - warning message 
  SET oMSG_TYPE = 1; 
  SET oERROR_MSG = 'SAT ON TRAILER IS DEAD. PLEASE GET IT REPLACED';  
END 
这是我的扳机

CREATE TRIGGER DEAD_TRAILERS_NOTIFY
AFTER UPDATE OF TRAILER ON TRIP 
REFERENCING NEW AS N OLD AS O 
FOR EACH ROW
BEGIN ATOMIC

DECLARE DEAD_SAT VARCHAR(10); 
DECLARE MSG VARCHAR(70); 

SET DEAD_SAT = COALESCE((SELECT TRAILER_ID FROM TRAILER WHERE LAST_SAT_DATE < CURRENT TIMESTAMP - 8 DAYS AND N.TRAILER = TRAILER_ID),'OK');

    IF DEAD_SAT <> 'OK' AND USER NOT IN ('VISTAR','TM4WIN') THEN
    CALL DEAD_TRAILERS();  
    END IF;
END

提前谢谢

您已经用两个(输出)参数定义了过程,但在触发器中您调用的是其他一些没有参数的过程。正如@mustaccio所述,这只是未定义过程时的错误消息。它与在触发器内部调用无关。但是,我们也不清楚您希望该代码如何“通知[您的]调度员”,因为错误消息不会传递到任何地方。您能解释一下所需的通知行为吗?我希望查询在其试图使用的资产满足无故障sat的条件时发送通知
-- [IBM][CLI Driver][DB2/NT64] SQL0440N  
No authorized routine named "DEAD_TRAILERS" of type "PROCEDURE" 
having compatible arguments was found.  
LINE NUMBER=13.  SQLSTATE=42884