在一个存储过程中1.@EDSTableName是一个传入参数
2.声明了一个变量 @Msg
   
SELECT @Msg = isnull(convert(varchar(255), @EDSTableName), 'NULL')
RAISERROR ('  "@EDSTableName" parameter value:                 "%s"', 0, 1, @Msg) WITH NOWAIT
请问这句话什么意思,,请说得详细一点

解决方案 »

  1.   

    把传入的参数@EDSTableName 转换成 varchar(255)类型的,然后如果是null值得话,就给给赋个'NULL'值。注意这个'NULL',是字符串,不是空值NULL第二句吧上面赋值以后的变量作为返回值抛出
    如果你在前台调用了这个存储,那前台就可以捕捉到这个错误了
      

  2.   

    几种RAISERROR类型被try...catch捕捉的结果
    --来自联机文档
    BEGIN TRY
        -- RAISERROR with severity 11-19 will cause execution to 
        -- jump to the CATCH block.
    -- RAISERROR only generates errors with state from 1 through 127.
        RAISERROR ('Error raised in TRY block.', -- Message text.
                   20, -- Severity.
                   2 -- State.
                   );
    END TRY
    BEGIN CATCH
    print('Enter Catch block:')
        SELECT 
             ERROR_MESSAGE(),
            ERROR_SEVERITY(),
            ERROR_STATE();
    END CATCH;--Severity=2,state=2时结果:
    /*
    Error raised in TRY block.
    消息 50000,级别 2,状态 2
    */--Severity=15,state=2时结果:
    /*
    Enter Catch block:
                                   
    ------------------------------- ---- ----
    Error raised in TRY block.       15   2(1 行受影响)
    */--Severity=20,state=2时结果(Message内容被提换):
    /*
    Enter Catch block:
                                                                           
    -----------------------------------------------------------------------  ---  ---
    大于 18 的错误严重级别只能由 sysadmin 角色的成员用 WITH LOG 选项指定。    16  1(1 行受影响)
    */--Severity=15,state=144时结果(Message内容被提换):
    /*
    Enter Catch block:
                                                                           
    -----------------------------------------------------------------------  ---  ---
    144 是无效的状态值。有效范围是从 1 到 127。。    16  1(1 行受影响)
    */