本人对db2不是很懂 公司里只是进行db2到oracle的移植  
以下db2代码是在if中goto到此的,我查了一下再oracle中也可使用goto,
那么请问以下sql语句用oracle实现应怎样改写:if .....
then ....
    goto ErrHandle;
end if;.........ErrHandle:
set @ErrMsg = '\0' || @ErrMsg || '\1';
signal sqlstate '70001' set message_text = @ErrMsg;
end;多谢高手赐教

解决方案 »

  1.   


    BEGIN
      .. .. ..;
      .. .. ..;
      .. .. ..;EXCEPTION
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error ---------------' || SQLCODE || '  :   ' ||
                             SQLERRM);
      
        .. .. ..;
        .. .. ..;
        .. .. ..;
      
    END;
      

  2.   

    楼上的朋友  可以给解释一下吗  我用的是goto跳转  
    你贴的这个没大看明白
      

  3.   

    这只是一个普通的exception捕获
      

  4.   

    ......    /定义部分BEGIN
      ......;    /--sql语句主体处理部分
      ......;
      ......;EXCEPTION     /--出错捕获
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error ---------------' || SQLCODE || '  :   ' ||
                             SQLERRM);     /--输出出错信息
      
        .. .. ..;    /--出错处理部分
        set @ErrMsg = '\0' || @ErrMsg || '\1';
        signal sqlstate '70001' set message_text = @ErrMsg;
        .. .. ..;
      
    END;
    Oracle的出错捕获(似是被动)和一般程序的goto(似是主动)使用的思维方式正好相反。
      

  5.   

    刚才才发现Oracle有goto语句,嘿嘿http://sourcecode.cangzhuo.com/Code/Oracle/PL-SQL/ExampleofaproperGOTOstatement.htm