如何在触发器中调用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”不是一个过程或未定义
答
你需要你的函数调用的结果存储在一个局部变量
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
仅供参考,在PL/SQL中,空括号()是可选的。 – 2010-10-05 01:39:37