【问题标题】:How to display error message generated from raiserror() with SQL Server如何使用 SQL Server 显示从 raiserror() 生成的错误消息
【发布时间】:2009-06-01 04:54:44
【问题描述】:

我正在通过 JDBC 从 jsp 与 SQL Server 2005 进行交互(这是一个分配,不是真正的项目),并且我在我正在使用的数据库中创建了一个触发器。如果在执行此触发器时不满足某个条件,我会通过 raiserror() 引发错误。我希望在通过 JDBC 调用 SQL Server 查询的实际页面上显示此错误,但目前当我打印出 SQLException.getMessage() 的结果时,我只收到以下默认消息:

事务在触发器中结束。该批次已中止。

有谁知道如何提取我在触发代码中实际传递给 raiserror 的文本?我已经试过了:

  • SQLException.getState()
  • SQLException.getNextException()
  • SQLException.getCause()
  • SQLException.toString()

【问题讨论】:

    标签: sql-server raiserror


    【解决方案1】:

    我想通了。这个问题与我在调用 raiserror() 时选择的严重性有关。我为此参数传递了 10,因为我看到了一个将 10 放在那里的示例,但是为了将错误文本传递给 SQLException,严重性必须为 11 或更高。更改严重性后,一切正常。如果其他人有类似的问题,我建议您尝试一下。此外,谷歌 JDBC 错误处理有用的文档(我会提交一个链接,但不允许新用户)。

    【讨论】:

      【解决方案2】:

      您需要迭代所有使用 getNextException() 返回的异常

      【讨论】:

      • 感谢您的回复。我试过了,但不幸的是似乎没有其他异常,因为当我调用 getNextException() 时它返回 null。
      • 您的 SQL 或程序中是否有任何 BEGIN TRY/BEGIN CATCH?
      • 我的 jsp 中有一个 try/catch 块,在那里我捕获了一个 SQLException。我的 SQL 中没有 BEGIN TRY 或 BEGIN CATCH 或类似的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多