maxbh:number(10);把冒号去了maxbh number(10);
new.bh := maxbh + 1后面加个分号new.bh := maxbh + 1;

解决方案 »

  1.   

    给你写了一个:
    你把a 和col1换成你的表和列就可以了
    CREATE OR REPLACE TRIGGER GDXB_TRIGGER 
    BEFORE INSERT ON a
    for each row
    declare
    maxbh number(10);
    begin
    select max(col1) into maxbh from a;
    :new.col1 := maxbh + 1;
    end;
    /
      

  2.   

    CREATE OR REPLACE TRIGGER GDXB_TRIGGERd 
    BEFORE INSERT ON GDXB
    declare
    maxbh number(10);
    begin
    select max(bh) into maxbh from gdxb;
    new.bh := maxbh + 1;
    end;
    /
    改过来了,可还是不行。  (注: 我用的是Oracle 8.05的版本)
    还是原来的错误: 警告:已创建的触发程序出现编译错误!
      

  3.   

    先提出一个明显错误,对于触发器体内不能再次对触发表再次触发。
    这样吧,用一个函数来代替代。
    create or replace function getmax
    return number
    as
    v_max number;
    begin
    select max(bh) into v_max from GDXB;
    return v_max;
    end;
    /CREATE OR REPLACE TRIGGER GDXB_TRIGGERd 
    BEFORE INSERT ON GDXB
    begin
    :new.bh :=getmax + 1;
    end;
    /