sybase触发器如下,现在要移植到oracle~~~      
   
CREATE    TRIGGER    tr_for_u_files    ON    V_Y_KHDA          
         FOR    INSERT    AS          
declare    getUserInfo    cursor    for          
select    HH    from    inserted      
for    read    only      
declare    @user_no    varchar(20)      
   
open    getUserInfo      
fetch    getUserInfo    into    @user_no      
while    @@sqlstatus    !=    2      
begin      
     if    @@sqlstatus    !=    1      
             begin      
                     DELETE    FROM    USER_FILES    WHERE    USER_NO    =    @user_no      
                     if    @@error    !=    0      
                             begin      
                                             rollback      
                                             continue      
                             end      
                                   
                     INSERT    INTO    USER_FILES(USER_NO,USER_NAME,ADDRESS,VOLT_LEVEL_CODE,ALL_CAPACITY,CANCEL_DATE,HAVE_ADD_INFO)      
                     SELECT    HH,HM,YDDZ,convert(int,DYDJ),HTRL,XHRQ,"1"    FROM    inserted    WHERE    HH    =    @user_no      
                     if    @@error    !=    0          
                     rollback    tran      
                     else      
                     commit    tran      
             end      
     fetch    getUserInfo    into    @user_no      
end      
close    getUserInfo      
deallocate    cursor    getUserInfo      
   
我转成下面这样,但是有错误~~      
CREATE    OR    REPLACE    TRIGGER    tr_for_u_files      
AFTER    INSERT      
ON    V_Y_KHDA      
for    each    row          
declare          
     user_no    varchar2(20);      
     cursor    getUserInfo    is    :new.HH;/*这个地方不知道怎么写,不知道这样写对不对*/      
begin          
open    getUserInfo;      
fetch    getUserInfo    into    user_no;      
while    getUserInfo%found    loop      
begin      
     if    getUserInfo%isopen    then          
             begin      
                             DELETE    FROM    USER_FILES    WHERE    USER_NO    =    user_no;      
                                   
                             INSERT    INTO    USER_FILES(USER_NO,USER_NAME,ADDRESS,VOLT_LEVEL_CODE,ALL_CAPACITY,CANCEL_DATE,HAVE_ADD_INFO)          
                             VALUES    (:NEW.HH,:NEW.HM,:NEW.YDDZ,convert(int,:NEW.DYDJ),:NEW.HTRL,:NEW.XHRQ,'1');      
                             commit;      
                             exception    when    others    then          
                                             rollback;      
             end;      
     end    if;      
fetch    getUserInfo    into    user_no;      
end;      
end    loop;      
close    getUserInfo;      
end;      
该怎么写啊~~高手帮忙~~谢谢各位!

解决方案 »

  1.   

    你用ORACLE的移植工具直接转换,去ORACLE的网站上找去
      

  2.   

    游标那里有错误对游标的申明
    cursor cursor_name is select colunm_name from table_name 还有你的循环也不对用for的游标循环
    for i in cursor_name loop
       
      if cusrsor_name%found then ……I为记录类型 不用声明 用FOR直接就对他复直了 引用的时候就直接用i.column_name 就行