数据库存储过程与VS通信小问题-SET NOCOUNT on/off

 今天有人问我他的VS中的程序连接到数据库的时候,插入数据到数据库明明已经成功了(数据表中有这条记录),但是返回给VS的程序总是-1,然后我看了他写的程序,知道他是用的存储过程进行插入操作的,然后他的存储过程的最前面的SET NOCOUNT ON 保存着,这个就是问题的原因。
  因为可能很多朋友写存储过程的时候不太注意上面的这个部分,所以下面就这个SET NOCOUNT ON/OFF的具体用法说一下。SET NOCOUNT 默认情况下= 就是你把这条语句删除的话 默认情况下是OFF的 SET NOCOUNT OFF就是调用这个存储过程会返回所影响的行数,如果是SET NOCOUNT ON的话 就不给返回影响的行数,也就是返回调用这个存储过程的默认值-1,所以上面这个问题就有两种解决方法1.直接把那个ON改成OFF;2.直接把这句语句删除; 这两种方法都能解决这个问题的。
   但是有朋友可能会问:那设置这个有什么意义呢? 这个主要是设成SET NOCOUNT ON的话,因为没有返回影响值,如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。所以如果你的存储过程是select 查询的话可以把它设置成SET NOCOUNT ON来提高运行速度。 不过现在这个计算机的运行速度已经很快了 内存一般至少都是2G的,所以这个速度基本上我们是没什么感觉的,这个建议如果这个不是很懂的朋友在学存储过程的时候就直接把那句话删除了,这样不管怎么样都不会出现这个问题的

posted on 2013-04-22 19:58  我就要超鬼  阅读(99)  评论(0编辑  收藏  举报

导航