create or replace trigger overdraft after update on account referencing new as n for each row when (n.balance<0)
begin 
 insert into loan values(n.account_number,n.branch_name,-n.balance);
 insert into borrower (select customer_name,account_number from depositor where n.account_number=depositor.account_number);
 update account set balance=0 where account.account_number=n.account_number
end;/用的是oracle10g xe,错误报告:行 5 上出现错误: PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
 begin
   case declare end exception exit for goto if loop mod null
   pragma raise return select update while with 
     <<
   close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe

解决方案 »

  1.   

    update   account   set   balance=0   where   account.account_number=n.account_number 
    这句后面没加分号
      

  2.   

    create or replace trigger overdraft after update on account referencing new as n for each row when (n.balance<0)
    begin 
     insert into loan values(n.account_number,n.branch_name,-n.balance);
     insert into borrower (select customer_name,account_number from depositor 
     where n.account_number=depositor.account_number);
     update account set balance=0 where account.account_number=n.account_number;
    end;/加了最后一句那个分号后,它还是报错:
    行 5 上出现错误: PL/SQL: SQL Statement ignored