DECLARE @Message NVARCHAR(MAX)
SET @Message=''
SET @Message=@Message+'测试消息'+ CHAR(13) + CHAR(10)
SET @Message=@Message+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息开始'+ CHAR(13) + CHAR(10)
BEGIN TRY
SELECT 1/0
END TRY
BEGIN CATCH
SELECT @Message=@Message+'存储过程的名称:'+ERROR_PROCEDURE()
SELECT @Message=@Message+'错误的行号:'+ERROR_PROCEDURE()
SELECT @Message=@Message+'异常消息:'+ERROR_MESSAGE()
SELECT @Message=@Message+'消息的错误号:'+ERROR_NUMBER()

END CATCH
SET @Message=@Message+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息结束:'+ CHAR(13) + CHAR(10) SELECT @Message
@Message 为什么会没值,怎样才能得到错误消息,存入变量中!

解决方案 »

  1.   

    DECLARE @Message NVARCHAR(MAX)
    SET @Message=''
    SET @Message=@Message+'测试消息'+ CHAR(13) + CHAR(10)
    SET @Message=@Message+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息开始'+ CHAR(13) + CHAR(10)
    BEGIN TRY
        SELECT 1/0
    END TRY
    BEGIN CATCH
        SELECT @Message=@Message+'存储过程的名称:'+isnull(ERROR_PROCEDURE(),'')
        SELECT @Message=@Message+'错误的行号:'+isnull(ERROR_PROCEDURE(),'')
        SELECT @Message=@Message+'异常消息:'+ERROR_MESSAGE()
        SELECT @Message=@Message+'消息的错误号:'+ltrim(ERROR_NUMBER())
    END CATCH
    SET @Message=@Message+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息结束:'+ CHAR(13) + CHAR(10)    SELECT @Message
      

  2.   

    BEGIN TRY
        SELECT 1/0
    END TRY到这个地方已经结束了
      

  3.   

    SELECT ERROR_PROCEDURE() --与存储过程有关
    --返回的是NULL
    --串联后都为NULL
      

  4.   


    DECLARE @Message NVARCHAR(MAX)
    SET @Message=''
    SET @Message=@Message+'测试消息'+ CHAR(13) + CHAR(10)
    SET @Message=@Message+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息开始'+ CHAR(13) + CHAR(10)
    BEGIN TRY
    BEGIN TRAN
        SELECT 1/0
    COMMIT TRAN
    END TRY
    BEGIN CATCH
        SELECT @Message=@Message+'  存储过程的名称:'+isnull(ERROR_PROCEDURE(),'')
        SELECT @Message=@Message+'  错误的行号:'+isnull(ERROR_PROCEDURE(),'')
        SELECT @Message=@Message+'  异常消息:'+ERROR_MESSAGE()
        SELECT @Message=@Message+'  消息的错误号:'+ltrim(ERROR_NUMBER())
    ROLLBACK
    END CATCH
    SET @Message=@Message+'  '+CONVERT(NVARCHAR(MAX),GETDATE(),121)+'测试消息结束:'+ CHAR(13) + CHAR(10)    SELECT @Message