可不可以在触发器里面
把:new.xxid 拆分为字符串数组a[](xxid其实是一个id集合串,用“,”分隔开的);
然后update tss set tss.chuliqk ='A' where tss.sswjid= a[i] ?主要是这个功能用触发器比较好。
动态sql是什么意思?

解决方案 »

  1.   

    可以定义数组 变量名也叫TABLE ,看pl*sql 语法
       自己在触发器的脚本里编一个拆吧。
      

  2.   

    in 可以用,但不是动态sql的语句里只能 in (4,5,6) 直接写。
      

  3.   

    create or replace type mytabletype as table of number;
    /create or replace function strtab(p_str in varchar2)
    return mytabletype
    as
    lstr varchar2(1000) default p_str||',';
    ln   number;
    ldata   mytabletype:=mytabletype();
    begin
    loop
      ln:=instr(lstr,',');
      exit when (nvl(ln,0)=0);
      ldata.extend;
      ldata(ldata.count):=ltrim(rtrim(substr(lstr,1,ln-1)));
      lstr:=substr(lstr,ln+1);
    end loop;
    return ldata;
    end;
    /begin
        if (:NEW.SPZTLX='2') then
          UPDATE TSS SET TSS.CHULIQK='A' WHERE TSS.SSWJID in (select * from table(cast(strtab(:NEW.XXID) as mytabletype)));
        end if;     
    End;
    /
      

  4.   

    用动态sql的写法
    ....
    declare str varchar2(200);
    begin
        if (:NEW.SPZTLX='2') then
            str:='UPDATE TSS SET TSS.CHULIQK=''A'' WHERE TSS.SSWJID in ('||:NEW.XXID||')';
            execute immediate str;
        end if;     
    End;