create or replace
TRIGGER TR_CHANGESTATUSCASE
BEFORE INSERT OR UPDATE OF "ERStatus" ON "ExpenseReport" 
FOR EACH ROW 
BEGIN
:new.ERStatus:= UPPER(:new.ERStatus);
END;Error(7,1): PLS-00049: 错误的赋值变量 'NEW.ERSTATUS'
Error(7,23): PLS-00049: 错误的赋值变量 'NEW.ERSTATUS'

解决方案 »

  1.   

    我觉得你的写法是对的,你看看下面的可以不select upper(:NEW.ERSTATUS') into :NEW.ERSTATUS' from dual;
      

  2.   

    同样的错误~~
    Error(7,14): PLS-00049: 错误的赋值变量 'NEW.ERSTATUS'
    Error(7,34): PLS-00049: 错误的赋值变量 'NEW.ERSTATUS'
      

  3.   

    你对照一下,看看问题所在啊:create or replace
    TRIGGER TR_CHANGESTATUSCASE
    BEFORE INSERT OR UPDATE OF ename ON emp 
    FOR EACH ROW 
    BEGIN
    :new.ename:= UPPER(:new.ename);
    END; select * from emp;update emp set  ename='test' where ename =  'SMITH';
      

  4.   

    看一下ExpenseReport的表结构
      

  5.   

    是建表时问题  -- Create table
    create table ExpenseReport
    (
      ERNo         NUMBER(16) not null,
      ERDesc       VARCHAR2(255) not null,
      ERSubmitDate DATE default SYSDATE not null,
      ERStatusDate DATE default SYSDATE not null,
      ERStatus     VARCHAR2(8) default 'PENDING' not null,
      SubmitUserNo NUMBER(16) not null,
      ApprUserNo   NUMBER(16)
    );-- Create/Recreate primary, unique and foreign key constraints 
    alter table ExpenseReport  add constraint ExpenseReport_PK primary key (ERNO);  
    -- CREATE OR REPLACE TRIGGER    
    CREATE OR REPLACE TRIGGER TR_CHANGE_STATUSCAS_EUPPER
      BEFORE INSERT OR UPDATE OF ERStatus ON ExpenseReport
      FOR EACH ROW
    BEGIN
      :new.ERStatus := UPPER(:new.ERStatus);
    END;
     
    测试通过