Oracle中的函数和触发器

Oracle中的函数和触发器,oracle,plsql,database-trigger,Oracle,Plsql,Database Trigger,如何在ORACLE中执行等效代码 代码是为Postgresql编写的 CREATE FUNCTION emp_stamp() RETURNS trigger AS emp_stamp BEGIN -- BODY END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE

如何在ORACLE中执行等效代码

代码是为Postgresql编写的

 CREATE FUNCTION emp_stamp() RETURNS trigger AS emp_stamp
    BEGIN
        -- BODY

    END;
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
    FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

我不知道Postresql。如果您可以解释这段代码的作用,那么可能会更容易提供帮助。同时,看看这个例子是否有用

函数接受员工的
EMPNO
,并从
salaries
表中返回其
MAX
salary
(没有多大意义,但它会替换您的
--body
注释)

触发器调用该函数并将员工的
emp.sal
列设置为该函数返回的值

create or replace trigger trg_emp_stamp
  before insert or update on emp
  for each row
begin
  :new.sal := emp_stamp(:new.empno);
end;
/

emp_stamp
的功能在这里至关重要。如果你告诉我们它的作用,我们可以解释如何在Oracle中做类似的事情。与Postgres不同,Oracle没有触发器函数构造。必要的代码直接放在触发器中,或者@Littlefoot表示触发器调用独立函数。所以“创建触发器…开始身体结束。
create or replace trigger trg_emp_stamp
  before insert or update on emp
  for each row
begin
  :new.sal := emp_stamp(:new.empno);
end;
/