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

时间:2010-10-04 13:10:08

标签: plsql

我是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'不是程序或未定义

1 个答案:

答案 0 :(得分:2)

您需要将函数调用的结果存储在局部变量

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;