当前位置: 首页 > 知识库问答 >
问题:

如何捕获导致大容量插入错误的特定ID

屠晟睿
2023-03-14

我有一个带有 INSERT 语句的代码块,其中应用了许多逻辑,几分钟后,由于任何其他插入错误(如“截断错误”等),它失败。因此,正如我在 catch 块中提到的,插入失败并引发错误,但我需要知道哪个特定 ID 导致该错误。有可能获得该ID吗?下面是我的示例代码块

BEGIN TRY
    BEGIN TRAN
        INSERT INTO MyTable (fieldA, fieldB,.....)
        SELECT (fieldA, fieldB,.....)
        FROM <many joins from other tables>

    COMMIT TRAN

END TRY 

BEGIN CATCH
    SELECT ERROR_NUMBER(), ERROR_MESSAGE()
    IF @@TRANCOUNT > 0
            ROLLBACK
END CATCH

在这个CATCH块中,如果插入失败,我们可以获得fieldA值以及ERROR_NUMBER()、ERROR_ MESSAGE()吗?

或者是否有其他方法可以查看导致错误的特定字段A值?如有任何建议,将不胜感激。

共有1个答案

常波鸿
2023-03-14

这样的事情可能会奏效:

DECLARE @ids TABLE (id bigint)
BEGIN TRY
BEGIN TRAN
    DECLARE @ids TABLE (id bigint)
    INSERT INTO b.tbl
    OUTPUT Inserted.ID INTO @ids(id)
    select       f1,f2,f3 from b.tbl
    COMMIT TRAN
END TRY 

BEGIN CATCH
    select * from @ids
    SELECT ERROR_NUMBER(), ERROR_MESSAGE()
    IF @@TRANCOUNT > 0
            ROLLBACK
END CATCH
 类似资料:
  • 我正在使用大容量插入并得到以下错误: 注意:加载文件中的数据不超过配置的列长度 从'C:\temp\dataload\load_file.txt'大容量插入load_data(firstrow=1,fieldterminator='0x09',rowterminator='\n',MAXERRORS=0,ERRORFILE='C:\temp\dataload\load_file') Msg 486

  • 我在运行代码时遇到此异常(打印类以进行调试): 我想像这样正确地处理异常: 不幸的是,DBInstanceNotFoundFault既不存在于botocore.exceptions也不存在于botocore.errorfactory.我已经为DBInstanceNotFoundFault克隆了boto3以及botocore和grep'd,但就是找不到它。 如何导入?

  • 下面是命令table exists,file exists on server: 谢谢你托马斯

  • 嗨,我是一个初学者,正在创建简单的wordpress模板。在我的函数中,除了粗体的代码行之外,其他一切都可以工作。php文件(wp_enqueue('jquery');)。当我排除它时,错误消失了,但我在查看源代码时没有看到wordpress添加的JQuery。不确定这是代码问题还是Jquery版本问题。我尝试添加JQuery迁移插件,但仍然出现相同的错误。我在本地机器上运行所有这些由拉拉贡设置。

  • 问题内容: 我想捕获一个特定的http错误,而不是整个家庭中的任何一个..我想做的是- 但是我最终捕获的是任何一种HTTP错误,但是我只想在指定的网页不存在的情况下捕获!可能是HTTP错误404 ..但我不知道如何指定仅捕获错误404并让系统为其他事件运行默认处理程序。 问题答案: Python 3 Python 2 只是捕获,处理它,如果不是Error 404,只需使用引发该异常即可。 请参阅P

  • 我现在必须学习通过fire base编写移动应用程序web服务。我点击了这个链接:https://firebase-php.readthedocs.io/en/stable/ 在我的核心网站中,我创建web服务文件夹,然后创建我的fire。php文件。这个文件代码在这里, 我得打电话给我的支持档案:https://github.com/kreait/firebase-php/ 但我还是得到了一个: