【问题标题】:I am having an issue in creating a trigger我在创建触发器时遇到问题
【发布时间】:2020-05-11 17:33:49
【问题描述】:
create trigger audit_trail01
    after update or delete on cust_mstr
    for each row
declare
    open varchar2(8);
begin
    if updating then
        open := 'UPDATE';
    elsif deleting then
        open := 'Delete';
    end if;

    insert into audit_cust
        ( cust_no
        , fname
        , mname
        , lname
        , dob_inc
        , occup
        , pancopy
        , fqrm60
        , operation
        , userid
        , opdate )
    values
        ( :old.cust_no
        , :old.fname
        , :old.mname
        , :old.lname
        , :old.dob_inc
        , :old.occup
        , :old.pancopy
        , :old.fqrm6o
        , open
        , user
        , sysdate );
end;

我已经写了上面的内容,但它显示了以下错误:

错误:

TRIGGER AUDIT_TRAIL01 行/列:5/8
PLS-00103:在预期以下情况之一时遇到符号“=”:
模组 绑定变量> 继续当前 sql 执行 forall 合并管道清除 json_exists json_value json_query json_object json_array

【问题讨论】:

  • 错误清楚地显示Line 5OPEN VARCHAR2(8); 那么你不明白什么? OPEN 是 Oracle 中的保留关键字。使用正确的变量名。
  • OPEN 是 Oracle 中的保留关键字。您不能将其用作变量。尝试替换,检查答案。
  • @dishant 我已经告诉过你有什么问题。试试看,不管它是否有效,然后回来。

标签: oracle plsql


【解决方案1】:

OPEN 是保留关键字,不能用于变量。将 OPEN 更改为 lv_OPEN。 有关 PL/SQL 的 oracle 保留字,请参阅 oracle 文档。 https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/reservewords.htm#LNPLS019

CREATE TRIGGER AUDIT_TRAIL01
    AFTER UPDATE OR DELETE ON CUST_MSTR 
    FOR EACH ROW 
    DECLARE 
    lv_OPEN VARCHAR2(8); 
    BEGIN 
    IF UPDATING THEN
      lv_OPEN := 'UPDATE'; 
    ELSIF DELETING THEN
      lv_OPEN := 'Delete'; 
    END IF;
    INSERT  INTO AUDIT_CUST (CUST_NO,FNAME,MNAME,LNAME,DOB_INC,OCCUP,PANCOPY,FQRM60,OPERATION,USERID,OPDATE)
    VALUES(:OLD.CUST_NO,:OLD.FNAME, :OLD.MNAME,:OLD.LNAME, :OLD.DOB_INC,:OLD.OCCUP ,:OLD.PANCOPY, :OLD.FQRM6O,lv_OPEN,USER,SYSDATE); 

    END; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2017-03-26
    • 2020-05-06
    • 1970-01-01
    • 2020-02-08
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多