oracle没有double类型,用number类型的
这样试试
CREATE OR REPLACE TRIGGER AccountInsertTouch
BEFORE INSERT ON account
FOR EACH ROW
DECLARE
v_current_balance  number(8,2);
BEGIN
v_current_balance := 100000.00;

UPDATE fund set current_balance = :v_current_balance 
WHERE fund_account = :new.fund_account and 
money_kind = '0';

:new.fund_account = :new.fund_account * 100;
END AccountInsertTouch;
/

解决方案 »

  1.   

    :v_current_balance有误
    这不是动态sql语句,不需要联编变量
      

  2.   

    :v_current_balance有误
    这不是动态sql语句,不需要联编变量
      

  3.   

    :v_current_balance 前面去掉:号
      

  4.   

    :v_current_balance 前面去掉:号
      

  5.   

    sho err to see what errors.
      

  6.   

    "WHERE fund_account = :new.fund_account"
    这样的表达只能在fund和account表中都有字段fund_account才行
    where 后的fund_account是不是写错了
    如果你给出fund和account的表结构,问题就一目了然了。error:
    :new.fund_account = :new.fund_account * 100;
    right:
    :new.fund_account := :new.fund_account * 100;
      

  7.   

    sho err to see what errors.
      

  8.   

    编译后用show error 察看错误信息
      

  9.   

    编译后用show error 察看错误信息
      

  10.   

    编译后用show error 察看错误信息
      

  11.   

    谢谢大家指导
    我改了触发器,简单了很多,但是那个错误。
    改过的:
    CREATE OR REPLACE TRIGGER FundInsertTouch
    BEFORE INSERT ON fund
    FOR EACH ROW
    WHEN (new.money_kind = 0)
    BEGIN
    :new.current_balance = 100000.00;
    END FundInsertTouch;1、表结构:
     Name                            Null?    Type
     ------------------------------- -------- ----
     MONEY_KIND                      NOT NULL CHAR(1)
     CURRENT_BALANCE                 NOT NULL NUMBER(16,2)
     
    2、show error说没有错误
    3、我怀疑还是具体的步骤上出错,而不是触发器本身。
      

  12.   

    老兄,你找个开发工具吧,如TOAD,PLSQLDEVELOPER等
    WWW.PCHOME.NET
      

  13.   

    老兄,你找个开发工具吧,如TOAD,PLSQLDEVELOPER等
    WWW.PCHOME.NET
      

  14.   

    谢谢大家帮忙
    我改了触发器,简单了很多,但是一样的warning:(
    改过的:
    CREATE OR REPLACE TRIGGER FundInsertTouch
    BEFORE INSERT ON fund
    FOR EACH ROW
    WHEN (new.money_kind = 0)
    BEGIN
    :new.current_balance = 100000.00;
    END FundInsertTouch;表结构:
     Name                            Null?    Type
     ------------------------------- -------- ----
     MONEY_KIND                      NOT NULL CHAR(1)
     CURRENT_BALANCE                 NOT NULL NUMBER(16,2)1、Warning: Trigger created with compilation errors.
    警告:触发器创建了带着编辑错误
    到底是什么意思?可能是由什么错误引起的?
    2、我感觉还是操作上的问题,和触发器本身关系不大。
    3、我的操作过程:
       a)找个编辑器写好触发器。就是上面贴着的改过的一段
       b)sqlplus中,sql>提示符下,剪贴上一步写的
       c) 回车,键入"/",回车
       d) 看见warning
      

  15.   

    WHEN (new.money_kind = '0')
      

  16.   

    WHEN (new.money_kind = '0')
      

  17.   

    :new.current_balance := 100000.00;
    这次少了一个:号 :)
      

  18.   

    :new.current_balance := 100000.00;
    这次少了一个:号 :)
      

  19.   

    编译后用show error 察看错误信息
    有些错误可以通过察看错误信息自己改过来