CREATE OR REPLACE TRIGGER "sa"."test" 
  BEFORE UPDATE ON "sa"."A" FOR EACH ROW 
BEGIN
  UPDATE B
   SET test=nvl(CONCAT(CONCAT(CONCAT(CONCAT('(',SUBSTR(replace
    (:new.test,' ',''),1,2)),')'),SUBSTR(replace(:new.test,' ',''),
      3,LENGTH(replace(:new.test,' ',''))-2)),'#'),' ')
        WHERE  B.id=:new.id ;   :new.test=CONCAT(CONCAT(CONCAT(CONCAT('(',SUBSTR(replace
     (:new.test,' ',''),1,2)),')'),SUBSTR(replace(:new.test,' ',''),
      3,LENGTH(replace(:new.test,' ',''))-2)),'#')  
END test;

解决方案 »

  1.   

    不对啊,提示:
    行号= 8 列号= 20 错误文本= PLS-00103: 出现符号 "="在需要下列之一时:  := . ( @ % ; indicator 
    行号= 9 列号= 1 错误文本= PLS-00103: 出现符号 "END"在需要下列之一时:  . ( * % & - + ; / at mod    rem return returning <an exponent (**)> and or || 
      

  2.   

    CREATE OR REPLACE TRIGGER "sa"."test" 
      BEFORE UPDATE ON "sa"."A" FOR EACH ROW 
    BEGIN
      UPDATE B
       SET test=nvl(CONCAT(CONCAT(CONCAT(CONCAT('(',SUBSTR(replace
        (:new.test,' ',''),1,2)),')'),SUBSTR(replace(:new.test,' ',''),
          3,LENGTH(replace(:new.test,' ',''))-2)),'#'),' ')
            WHERE  B.id=:new.id ;   :new.test:=CONCAT(CONCAT(CONCAT(CONCAT('(',SUBSTR(replace
         (:new.test,' ',''),1,2)),')'),SUBSTR(replace(:new.test,' ',''),
          3,LENGTH(replace(:new.test,' ',''))-2)),'#'); 
    END test;
      

  3.   

    各上一个不一样吗? 
    你END 后边加个test什么意思?
      

  4.   

    :new.test:=CONCAT(CONCAT(CONCAT(CONCAT('(',SUBSTR(replace
         (:new.test,' ',''),1,2)),')'),SUBSTR(replace(:new.test,' ',''),
          3,LENGTH(replace(:new.test,' ',''))-2)),'#'); 
    加了一个冒号(:new.test:=...)与分号(...'#');) END 后边加个test使过程块更加清晰一些。关键是你运行还有没有问题?