试试。收到SQL问题

时间:2010-05-25 12:48:00

标签: sql exception-handling try-catch

有没有办法知道我的哪个更新或插入语句通过失败来执行catch块

6 个答案:

答案 0 :(得分:3)

首先创建一个表变量 在执行proc时,将已运行的步骤或错误消息插入表中。 在catch中回滚之后,表变量仍然可用,然后使用它插入到日志记录表中。

答案 1 :(得分:1)

如何用不同的try-catch块包围更新和插入语句?

此外,您可以检查SELECT ERROR_MESSAGE(), ERROR_STATE()以确定引发当前异常的内容

答案 2 :(得分:0)

Oracle PL / SQL具有异常处理:http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm

否则,您可以使用编程语言异常处理工具。

答案 3 :(得分:0)

堆栈转储可以包含一些信息,例如错误发生在哪一行,但这不是直接有用的。

最简单的可能是在每个查询之前设置一个变量,然后你可以在catch中检查它的值。

答案 4 :(得分:0)

我想到的一件事就是在事件查看器执行后立即将错误代码记录到事件查看器中。

例如

尝试 err_code = 1 - 查询1-- err_code = 2 - 查询2-- 。 。 。 抓住 - 将err_code记录到事件查看器 -

然后通过查看事件查看器,您将看到上次成功查询的错误代码。

希望有所帮助

答案 5 :(得分:0)

尝试这样的事情:

Declare @Where varchar(50)

BEGIN TRY
    SET @Where='1st update'
    UPDATE....
    SET @Where=NULL

    ...

    SET @Where='2nd update'
    UPDATE....
    SET @Where=NULL

    ...

    SET @Where='1 insert'
    INSERT....
    SET @Where=NULL


END TRY
BEGIN CATCH
    PRINT @Where

END CATCH