仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 851|回复: 8
打印 上一主题 下一主题

[学习教程] SQL Server中nocount详解

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:19:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。setnocounton是什麼意义。
我想請問一下:setnocounton是什麼意义,為什麼良多的storedprocedures的第一行都有遮一句話??多謝!!!
每次我们在利用查询剖析器调试SQL语句的时分,一般会看到一些信息,提示我们以后有几个行遭到了影响,这是些甚么信息?在我们挪用的时分这些信息有效吗?是不是能够封闭呢?
谜底是这些信息在我们的客户真个使用程序中是没有效的,这些信息是存储过程当中的每一个语句的DONE_IN_PROC信息。
我们能够使用SETNOCOUNT来把持这些信息,以到达进步程序功能的目标。
MSDN中匡助以下:

SETNOCOUNT
使前往的了局中不包括有关受Transact-SQL语句影响的行数的信息。
语法
SETNOCOUNT{ON|OFF}
正文
当SETNOCOUNT为ON时,不前往计数(暗示受Transact-SQL语句影响的行数)。当SETNOCOUNT为OFF时,前往计数。
即便当SETNOCOUNT为ON时,也更新@@ROWCOUNT函数。
当SETNOCOUNT为ON时,将不给客户端发送存储过程当中的每一个语句的DONE_IN_PROC信息。当利用MicrosoftSQLServer供应的有用工具实行查询时,在Transact-SQL语句(如select、_insert、_update和_delete)停止时将不会在查询了局中显现"nnrowsaffected"。
假如存储过程当中包括的一些语句其实不前往很多实践的数据,则该设置因为大批削减了收集流量,因而可明显进步功能。
SETNOCOUNT设置是在实行或运转时设置,而不是在剖析时设置。
权限
SETNOCOUNT权限默许授与一切用户。
结论:我们应当在存储历程的头部加上SETNOCOUNTON如许的话,在加入存储历程的时分加上SETNOCOUNTOFF如许的话,以到达优化存储历程的目标。
多说两句:
1:在检察SqlServer的匡助的时分,要注重“权限”这一节,由于某些语句是必要必定的权限的,而我们常常疏忽。
2:@@ROWCOUNT是前往受上一语句影响的行数,包含找到纪录的数量、删除的行数、更新的纪录数等,不要以为只是前往查找的纪录数量,并且@@ROWCOUNT要紧跟必要判别语句,不然@@ROWCOUNT将前往0。
3:假如利用表变量,在前提表达式中要利用别号来替换表名,不然体系会报错。
4:在CUD类的操纵中必定要有事件处置。
5:利用毛病处置程序,用来反省@@ERROR体系函数的T-SQL语句(IF)实践上在历程中扫除了@@ERROR值,没法再捕捉除零以外的任何值,必需利用SET或select当即捕捉毛病代码。
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。
简单生活 该用户已被删除
沙发
发表于 2015-1-18 12:53:29 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 23:10:43 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
爱飞 该用户已被删除
地板
发表于 2015-2-4 13:21:59 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
深爱那片海 该用户已被删除
5#
发表于 2015-2-9 23:37:05 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
兰色精灵 该用户已被删除
6#
发表于 2015-2-28 09:40:50 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
不帅 该用户已被删除
7#
发表于 2015-3-9 22:10:44 | 只看该作者
大家注意一点。如下面的例子:
若天明 该用户已被删除
8#
发表于 2015-3-17 02:10:28 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
透明 该用户已被删除
9#
发表于 2015-3-23 17:40:05 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表