oracle 不熟,请帮忙把这个触发器转换成oracle触发器语法,感激不尽CREATE TRIGGER createpmh ON [dbo].[scgl_cppld_wlpmpz] 
FOR INSERT
AS
declare @zzh varchar(50),
        @scrwdid int,
        @wlid int,
        @scdwid int ,
        @fid int ,
        @flag  int ,
        @cpid int
begin   declare  my_cursor1 cursor  for select scrwdid,wlid,scdw,fid  from inserted 
   open  my_cursor1 
             fetch next from my_cursor1 into @scrwdid,@wlid,@scdwid,@fid 
             while @@fetch_status =0
             begin
                exec cggl_pmgl_test  @scdwid,@wlid,0,@zzh output                     
                update scgl_cppld_wlpmpz  set pmh=@zzh  where scgl_cppld_wlpmpz.fid=@fid  
                fetch next from my_cursor1 into @scrwdid,@wlid,@scdwid,@fid 
             end  
    close my_cursor1
    deallocate my_cursor1
end

解决方案 »

  1.   

    create trigger createpmh after
    insert on scgl_cppld_wlpmpz
    for each row
    as
      declare
        cursor my_cursor1 is 
        select scrwdid,wlid,scdw,fid from inserted for update;
        zzh varchar2(50);
        n_scrwdid int;
        n_wlid int;
        n_scdwid int;
        n_fid int;
        n_flag int;
        n_cpid int;
      begin
        open my_cursor1;
        fetch my_cursor1 into n_scrwdid,n_wlid,n_scdwid,n_fid;
        while my_cursor1%found loop
           exec cggl_pmgl_test(...);
           update scgl_cppld_wlpmpz set pmh=zzh
             where scgl_cppld_wlpmpz.fid=n_fid
             where current of cursor;
           fetch my_cursor1 into n_scrwdid,n_wlid,n_scdwid,n_fid;
        end loop;
        close my_cursor1;
      end;这段代码就是安排oracle的格式来的,不过运行起来估计还有问题,自己可以改了