我要实现很简单的功能
Table A  有个字段 delflagA在每次插入一行记录的时候,我就检查A.delflag是否为1。如果不是,则置为1。触发器:
Create or replace trigger TRIG_A
After insert on A
For each row 
BEGIN
  ACCOUNTSECURITY(:NEW.ACCOUNTID);
END;存储过程:
CREATE OR REPLACE PROCEDURE "ACCOUNTSECURITY" ( 
NEWACCOUNTID NUMBER 

as 
begin 
update A SET delflag= 1 WHERE ACCOUNTID=NEWACCOUNTID; 
end;但触发器报错,编译不过去。
请问是怎么回事?

解决方案 »

  1.   

    说列或索引缺失in or out 参数
      

  2.   

    哥哥用触发器就行的阿,为何还用FUNCTION?
    create or replace trigger tri_aaclass
      before insert  on aaclass
       FOR EACH ROW
      
    begin
        IF :NEW.DELFLAG <> '1' THEN
          :NEW.DELFLAG := '1';
         END IF;
      EXCEPTION
        WHEN OTHERS THEN
           :NEW.DELFLAG := '1';
      end;
      

  3.   

    那你把NEWACCOUNTID NUMBER改成NEWACCOUNTID IN NUMBER试试看。
    好像缺省的是in/out类型。但是:New结构体是不允许修改的。
    同样疑惑,为什么一定要把简单事情复杂化呢?
      

  4.   

    CREATE OR REPLACE PROCEDURE "ACCOUNTSECURITY" ( 
    NEWACCOUNTID NUMBER 

    NEWACCOUNTID的类型没有说明是in 还是out
    应该改成NEWACCOUNTID in NUMBER