用exception,例如
DECLARE
 BEGIN
      BEGIN  -- sub-block begins 
         update yourtable set col1='test' where --你的update语句
         COMMIT;
         EXIT;
      EXCEPTION
         WHEN others THEN
            ROLLBACK;
      END;  -- sub-block ends
END;

解决方案 »

  1.   

    我写了个例子,执行成功返回T,失败返回F
    CREATE OR REPLACE PROCEDURE "INSERTAREAS" (
       tareaid      IN       VARCHAR2,
       tareaname    IN       VARCHAR2,
       tre      IN       VARCHAR2,
       execresult   OUT      VARCHAR2
    )
    AS
    BEGIN
       INSERT INTO areas
                   (areaid, areaname, re
                   )
            VALUES (to_number(tareaid), tareaname, tre
                   );   execresult := 'T';
       COMMIT;
    EXCEPTION
       WHEN OTHERS
       THEN
          ROLLBACK;
          execresult := 'F' || SQLCODE;
    END "INSERTAREAS";
    /
      

  2.   

    有没有象MSSQL中
    的 @@error属性?
      

  3.   

    写个例子:
       INSERT INTO areas
                   (areaid, areaname, re
                   )
            VALUES (to_number(tareaid), tareaname, tre
                   );
       IF SQL%NOTFOUND THEN
          RAISE_APPLICATION_ERROR(-20000,'...');
       END IF;