站长网 百科 处理ORACLE例外

处理ORACLE例外

我需要处理 ORA-01400 error(不能使用异常句柄将NULL插入(“SCHEMA”.“TABLE_NAME”.“COLUMN_NAME”)). ORACLE预定义了一些例外(例如ACCESS_INTO_NULL,ZERO_DIVIDE等),但显然没有为ORA-01400错误定义异常,我该如何处理这个特定的错误代码? 我需要这样的

我需要处理
ORA-01400 error(不能使用异常句柄将NULL插入(“SCHEMA”.“TABLE_NAME”.“COLUMN_NAME”)).

ORACLE预定义了一些例外(例如ACCESS_INTO_NULL,ZERO_DIVIDE等),但显然没有为ORA-01400错误定义异常,我该如何处理这个特定的错误代码?

我需要这样的东西(接受其他建议).

....
 ...     
 INSERT INTO MY_TABLE (CODE,NAME) VALUES (aCode,aName);
 COMMIT;
   EXCEPTION
     WHEN NULL_VALUES THEN /* i don't know this value,exist?*/
       Do_MyStuff();
     WHEN OTHERS THEN
       raise_application_error(SQLCODE,MY_OWN_FORMAT_EXCEPTION(SQLCODE,SQLERRM),TRUE); 
    END;

预定义的PL / SQL异常对Oracle来说是特殊的.你真的不能搞砸那些.如果您想拥有自己的一组预定义异常,则不能像标准的那样“全局”声明它们.相反,创建一个包含所有异常声明的异常包,并在您的应用程序代码中使用它.

例:

CREATE OR REPLACE PACKAGE my_exceptions
AS
  insert_null_into_notnull EXCEPTION;
  PRAGMA EXCEPTION_INIT(insert_null_into_notnull,-1400);

  update_null_to_notnull EXCEPTION;
  PRAGMA EXCEPTION_INIT(update_null_to_notnull,-1407);
END my_exceptions;
/

现在使用包中定义的异常

CREATE OR REPLACE PROCEDURE use_an_exception AS
BEGIN
  -- application specific code ...
  NULL;
EXCEPTION
  WHEN my_exceptions.insert_null_into_notnull THEN
     -- application specific handling for ORA-01400: cannot insert NULL into (%s)
     RAISE;
END;
/

资料来源:http://www.orafaq.com/wiki/Exception

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/baike/2021/0524/5593.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部