【问题标题】:how to provide error message when rising oracle predefined exception出现oracle预定义异常时如何提供错误消息
【发布时间】:2015-05-05 17:55:41
【问题描述】:

我在 SQL 中增加了 DUP_VAL_ON_INDEX,我想将一些自定义错误消息与之关联。 现在执行代码后

IF ___SOME_CONDITION___ THEN
  RAISE DUP_VAL_ON_INDEX;
END IF

我看到以下消息:

00001. 00000 -  "unique constraint (%s.%s) violated"

我如何提供自定义消息来替换这些“%s”?

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    您通常不会自己提出这些预定义的错误。相反,您可以让数据库引发它们(例如,您确实尝试插入违反唯一约束/索引的行)或引发您自己的自定义错误(例如raise_application_error())并在那里提供必要的信息。

    【讨论】:

    • Oracle 文档说您可以使用这些预定义的异常并且有一个示例。我不认为这是一个有效的答案。
    • @Sergey 这是一个有效的答案 - “您通常不会自己提出这些预定义的错误”。而是定义并引发您自己的unique_constraint_violated 异常(参见例如stackoverflow.com/q/6020450)。 (我不知道如何在预定义的异常文本中替换占位符。)
    • @Sergey 完全有可能跳下悬崖。这并不意味着这样做一定是个好主意!是的,你当然可以随心所欲地提出预定义的错误,但你必须记住,Oracle 没有提供一种方法让你将参数传递给它们。
    • @Boneist Oracle 没有提供将参数传递给它们的方法。谢谢,这是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多