【问题标题】:Referencing Oracle trigger old and new variables to Oracle stored procedure in parameter [duplicate]在参数中将 Oracle 触发器新旧变量引用到 Oracle 存储过程 [重复]
【发布时间】:2020-04-18 03:58:38
【问题描述】:

我需要将新旧变量值传递给一个过程。有谁知道这样做的方法吗?

在我的触发器之下:

create or replace TRIGGER "TRG_BEF_TESTE_TABELA_1"
BEFORE INSERT OR UPDATE OR DELETE ON "TESTE_TABELA_1"
REFERENCING NEW AS NOVO OLD AS VELHO
FOR EACH ROW
declare
  n_reg teste_tabela_1%rowtype;
  v_reg teste_tabela_1%rowtype;
begin
  n_reg := :new;
  v_reg := :old;
  proc_teste_tabela_1(:new);
end;

在我的程序下面:

create or replace PROCEDURE PROC_TESTE_TABELA_1(P_TABELA in teste_tabela_1%rowtype) IS
begin
end;

【问题讨论】:

  • 除非teste_tablea_1 恰好是一个对象表(并且可以将过程修改为采用对象类型而不是%rowtype),否则您不能处理:new 和@987654326 @pseudorecords 作为实际记录。换句话说,你不能做你想做的事。您可以从:new:oldn_regv_reg 逐列分配值,但是每次向表中添加新列时都需要更新。

标签: oracle plsql


【解决方案1】:

以下是 Oracle 文档的链接,展示了如何引用 OLD/NEW 伪记录:

https://docs.oracle.com/cd/E17781_01/appdev.112/e18147/tdddg_triggers.htm#BABBFAGD

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 2010-11-02
    • 2021-11-02
    • 1970-01-01
    • 2013-11-08
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多