【问题标题】:PLS-00049: bad bind variable?PLS-00049:绑定变量错误?
【发布时间】:2017-01-18 10:50:46
【问题描述】:

看不到我的代码哪里错了...有人能解释一下我做错了什么吗?我尝试了从:new."new_name" 到将表前缀:NEW.sh_name:NEW.name 的所有方法,不知道还能做什么......

这是表格:

  CREATE TABLE sh_auro (
    new_name   varchar2(30),
    old_name   varchar2(30),
    user_name   varchar2(30),
    entry_date   varchar2(30),
    operation   varchar2(30)
  );

这里是超级英雄桌:

create table superhero(
  v_name varchar2(20)
);

这里是触发器:

create or replace trigger superhero_auro
before insert or delete or update on superhero
for each row
enable

declare
  v_user varchar2(30);
  v_time varchar2(30);
begin
select user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') into v_user, v_time from dual;
if inserting then
  insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(:NEW.new_name, null, v_user, v_time, 'Insert');
elsif deleting then
  insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(null, :OLD.old_name, v_user, v_time, 'Delete');
elsif updating then
  insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(:NEW.new_name, :OLD.old_name, v_user, v_time, 'Update');
end if;
end;

这是错误:

Error(7,82): PLS-00049: bad bind variable 'NEW.NEW_NAME'
Error(9,88): PLS-00049: bad bind variable 'OLD.OLD_NAME'
Error(11,82): PLS-00049: bad bind variable 'NEW.NEW_NAME'
Error(11,97): PLS-00049: bad bind variable 'OLD.OLD_NAME'

【问题讨论】:

    标签: sql plsql oracle11g


    【解决方案1】:

    您正在超级英雄表上创建触发器 - 这没有列 new_name 和 old_name - 因此您不能使用 :new.new_name 或 :old.new_name。

    你应该使用的是 :new.v_name 和 :old.v_name

    【讨论】:

    • 天哪,要把子弹射进我的大脑...谢谢回答它正在工作:))
    • :) 请不要走得太远
    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2017-08-16
    • 2019-06-05
    • 2015-08-09
    • 1970-01-01
    • 2020-10-22
    • 2022-06-13
    • 2016-01-03
    相关资源
    最近更新 更多