首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLS-00049错误

PLS-00049错误
EN

Stack Overflow用户
提问于 2015-08-24 16:03:50
回答 2查看 399关注 0票数 0

我正在尝试将审计添加到Oracle数据库中的表中,但我一直收到PLS-00049错误。下面是我的脚本:

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER gfmdev.audit_feature_performance
BEFORE INSERT OR UPDATE
ON gfmdev.feature_performance
FOR EACH ROW
DECLARE
    osuser  VARCHAR2(8);
BEGIN
    --
    -- get who is making the DML change from the session
    --
    osuser := session_info.osuser;
    --
    IF (NOT (dbms_snapshot.i_am_a_refresh)
    AND dbms_reputil.replication_is_on) THEN
            IF NOT dbms_reputil.from_remote THEN
                IF INSERTING THEN
                    :new.created_by := osuser;
                    :new.creation_date := sysdate;
                    :new.last_updated_by := osuser;
                    :new.last_updated_date := sysdate;
                END IF;
                --
                IF UPDATING THEN
                    :new.last_updated_by := osuser;
                    :new.last_updated_date := sysdate;
                END IF;
            END IF;
    END IF;

EXCEPTION
    WHEN OTHERS THEN
            -- raise error if we cannot set auditing fields
            raise_application_error(-20505, 'audit_feature_performance Failed. Rolling Back.' || SQLERRM);
END;

抛出的错误是:

代码语言:javascript
复制
PLS-00049: bad bind variable 'NEW.LAST_UPDATED_BY'
PLS-00049: bad bind variable 'NEW.LAST_UPDATED_DATE'
PLS-00049: bad bind variable 'NEW.LAST_UPDATED_BY'
PLS-00049: bad bind variable 'NEW.LAST_UPDATED_BY'
PLS-00049: bad bind variable 'NEW.LAST_UPDATED_DATE'

我不明白为什么会发生这种情况。在这方面的任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2015-08-24 19:57:30

尝试:

created_by := osuser;:new.creation_date := sysdate;:new.last_updated_by := osuser;:new.last_updated_date

代码语言:javascript
复制
alter table gfmdev.feature_performance add (
created_by  varchar2(100),
creation_date date,
LAST_UPDATED_BY varchar2(100),
LAST_UPDATED_DATE date
)
/

然后执行create trigger命令,或者重新编译它。

票数 0
EN

Stack Overflow用户

发布于 2015-08-25 04:32:22

尝试使用REFERENCING OLD AS OLD NEW AS NEW

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER gfmdev.audit_feature_performance
BEFORE INSERT OR UPDATE ON gfmdev.feature_performance
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32177231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档