如何在触发器中调用PL/SQL函数

问题描述:

我是pl/sql的新手。任何人都可以告诉我如何在触发器中调用pl/sql函数。如何在触发器中调用PL/SQL函数

我累了,但它试图运行它时会出错。

DROP TRIGGER INTF_CONTROLLER_TREXE; 

CREATE OR REPLACE TRIGGER INTF_CONTROLLER_TREXE 
before insert ON INTF_CONTROLLER for each row 
begin 
BACKOFFICE_UPDATE(); 
end; 


CREATE OR REPLACE FUNCTION BACKOFFICE_UPDATE 
RETURN NUMBER IS 
tmpVar NUMBER; 

BEGIN 
    tmpVar := 0; 
    DBMS_OUTPUT.put_line ('HELLO'); 
    RETURN tmpVar; 


    EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
     NULL; 
    WHEN OTHERS THEN 
     -- Consider logging the error and then re-raise 
     RAISE; 
END BACKOFFICE_UPDATE; 

我试着用TOAD来运行它。它提供了以下错误

PLS-00221:“BACKOFFICE_UPDATE”不是一个过程或未定义

+0

仅供参考,在PL/SQL中,空括号()是可选的。 – 2010-10-05 01:39:37

你需要你的函数调用的结果存储在一个局部变量

For example: 
CREATE OR REPLACE TRIGGER INTF_CONTROLLER_TREXE 
before insert ON INTF_CONTROLLER for each row 
declare 
dummy NUMBER; 
begin 
dummy := BACKOFFICE_UPDATE(); 
end; 
+0

哎呀..它现在正常工作,谢谢兄弟.. – nath 2010-10-04 13:26:31

+0

上帝保佑这个答案 – 2012-05-13 17:52:11