微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

System.Data.SqlClient将存储过程中的SQL Server PRINT语句与RAISERROR消息连接在一起

如何解决System.Data.SqlClient将存储过程中的SQL Server PRINT语句与RAISERROR消息连接在一起

我相当简单的存储过程在第44行上完成了此操作

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

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

   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吗?

解决方法

啊哈!刚发现。在RAISERROR上方的几行中有一个PRINT语句。不知道(无关)PRINT语句会附加到错误消息!

  PRINT 'Fee fie fo fum'

  <snip>

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

客户端的SqlException消息属性是“等等等等” + CRLF +“费用当即”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。