Create or replace trigger stud_insert 
After insert on student 
Begin 
Update student 
Set name=’intcap(name)’; 
If gender=’1’ then 
Update student 
Set gender=’男’; 
End if; 
if gender=’0’ then 
Update student 
Set gender=’女’; 
End if; 
Update student 
Set age=age +‘岁’; 
End; 
/ 总是出现要声明gender ,哪位高手帮帮忙吧,thank you very much *^_^*

解决方案 »

  1.   

    Create or replace trigger stud_insert 
    After insert on student 
    for each row
    Begin 
    Update student 
    Set name=intcap(name); 
    If :new.gender=’1’ then 
    Update student 
    Set gender=’男’; 
    End if; 
    if :new.gender=’0’ then 
    Update student 
    Set gender=’女’; 
    End if; 
    Update student 
    Set age=age +‘岁’;----逻辑好像会有问题。 
    End; 

      

  2.   

    这样会报错说表级触发器不能使用new 和old~~~~
      

  3.   

    不是加上for each row了吗?怎么还会是表级触发器呢。
    你在看看你的拼写有没有问题
      

  4.   

    另外你的函数intcap------>initcap:返回字符串并将字符串的第一个字母变为大写;
      

  5.   

    还是有错误……
    SQL> Create or replace trigger stud_insert
      2   After insert on student
      3  For each row
      4  Begin
      5  Update student 
      6  Set name=intcap(name);
      7  If :new.gender='1' then
      8  Update student
      9  Set gender='男;
     10  End if;
     11  if :new.gender='0' then
     12  Update student
     13  Set gender='女';
     14  End if;
     15  Update student
     16  Set age=age +'岁';
     17  End;
     18  /警告: 创建的触发器带有编译错误。SQL> show error;
    TRIGGER STUD_INSERT 出现错误:LINE/COL ERROR
    -------- ----------------------------------------------------------
    5/1      PL/SQL: SQL Statement ignored
    8/17     PL/SQL: ORA-00933: SQL 命令未正确结束
    14/4     PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
             ;
    能再帮我改改吗?
      

  6.   


    根据你的意思,应该用before insert来实现触发的,而不是在insert之后再去修改表Create or replace trigger stud_insert 
    before insert on student 
    for each row 
    Begin 
    :new.name:=initcap(:new.name); 
    if :new.gender='1' then 
      :new.gender:='男'; 
    elsif :new.gender='0' then 
      :new.gender:='女'; 
    end if; 
    :new.age:=:new.age ||'岁'; 
    End; 
      

  7.   

    12:31:56 scott@TUNGKONG> Create or replace trigger stud_insert
    12:31:58   2  before insert on student
    12:31:58   3  for each row
    12:31:58   4  Begin
    12:31:58   5  :new.name:=initcap(:new.name);
    12:31:58   6  if :new.gender='1' then
    12:31:58   7    :new.gender:='男';
    12:31:58   8  elsif :new.gender='0' then
    12:31:58   9    :new.gender:='女';
    12:31:58  10  end if;
    12:31:58  11  :new.age:=:new.age ||'岁';
    12:31:58  12  End;
    12:31:59  13  /触发器已创建已用时间:  00: 00: 00.01