-2

我相当简单的存储过程在第 44 行执行此操作:

IF @a = @b
    RAISERROR('blah blah blah', 11, 1)
    RETURN

System.Data.SqlClient使用 .NET Framework库在客户端调用存储过程:

   try
   {
        SqlCommand c = new SqlCommand();
        c.CommandType = CommandType.StoredProcedure;
        c.CommandText = "procname";
        c.ExecuteNonQuery()   // execute the stored procedure 
   }
   catch(SqlException sex)
       throw sex;
   catch(Exception ex)
   {
        throw ex;
   }

ex被捕获时,其值为blah blah blah+ CRLF +1259

那是1259从哪里来的?它是否对应于严重性 11?

4

1 回答 1

0

啊哈!刚找到。PRINTRAISERROR 上方有几行声明。不知道(不相关的)PRINT 语句会附加到错误消息中!

  PRINT 'Fee fie fo fum'

  <snip>

  if @a = @b
     RAISERROR('blah blah blah', 11, 1)
     return

客户端的 SqlException 消息属性是“blah blah blah”+ CRLF +“Fee fie fo fum”

于 2020-10-30T19:11:22.520 回答