gpt4 book ai didi

tsql - 为什么ERROR_MESSAGE()始终为null?

转载 作者:行者123 更新时间:2023-12-04 13:21:00 24 4
gpt4 key购买 nike

我在sql server 2008中编写存储过程。问题是@ErrorMessage out参数始终为null。它似乎与ERROR_MESSAGE()函数有关,因为当我摆脱掉该消息时,将返回消息的另一部分。

我如何获取它以返回整个errorMessage?

-- Log transaction
INSERT INTO Transactions (TxnId, TypeId, [Date], Amount)
VALUES(@TxnId, @TypeId, @TransDate, @Amount)

-- Check for errors
IF @@ERROR <> 0
BEGIN
PRINT 'Starting third error block'

SET @ErrorCode = 202
SELECT @ErrorMessage = 'Err_TxnId_Exists - Error inserting: ' + ERROR_MESSAGE()

PRINT @ErrorCode
PRINT @ErrorMessage
PRINT 'Ending third error block'

RETURN 1
END

消息输出

该语句已终止。
开始第三个错误块
202

结束第三个错误块

(影响1行)

结果
  • @ErrorCode = 202
  • @ErrorMessage =空

  • (影响1行)

    最佳答案

    ERROR_MESSAGE()仅在CATCH块内有效。

    试一下:

    BEGIN TRY
    INSERT INTO Transactions (TxnId, TypeId, [Date], Amount)
    VALUES (@TxnId, @TypeId, @TransDate, @Amount)
    END TRY
    BEGIN CATCH
    SET @ErrorCode = 202
    SET @ErrorMessage = ERROR_MESSAGE()
    PRINT @ErrorCode
    PRINT @ErrorMessage
    END CATCH;

    关于tsql - 为什么ERROR_MESSAGE()始终为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6063093/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com