仓酷云

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

[学习教程] ROWCOUNT的申明

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

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

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

x
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。setROWCOUNT10
select*fromtablename
=查询表的TOP10笔记录。

select@@ROWCOUNT
是检察以后ROWCOUNT的值。
、*******************************************************************、
上面一段存储历程
--新增
IF(@DB_Option_Action_=Insert)
BEGIN
INSERTINTOsys_Module(
M_ApplicationID,
M_ParentID,
M_PageCode,
M_CName,
M_Directory,
M_OrderLevel,
M_IsSystem,
M_Close
)VALUES(
@M_ApplicationID,
@M_ParentID,
@M_PageCode,
@M_CName,
@M_Directory,
@M_OrderLevel,
@M_IsSystem,
@M_Close
)
SET@ReturnValue=@@ROWCOUNT
END
ReturnValue就是失掉的实行拔出的纪录的条数。ROWCOUNT

/********************

据传SQL2005有了RowID的器材,能够办理TOP排序的成绩。惋惜还没无机会体验。在SQL2000中写存储历程,总会碰着必要TOP的中央,而一旦碰着TOP,由于没举措把TOP前面的数字作为变量写到预编译的语句中往,以是只可以利用机关SQL,利用Exec来实行。不说效力的成绩,内心也总以为这个举措很笨。
实践上,在SQL2000中完整可使用ROWCOUNT关键字办理这个成绩。
ROWCOUNT关键字的用法在联机匡助中有对照详细的申明,这儿就不罗嗦了。谈谈体味。
1、利用ROWCOUNT查询前几行了局。
DECLARE@nINT
SET@n=1000
SETROWCOUNT@n
SELECT*FROMTable_1

如许,查询了局将同等于
SELECTTOP100FROMTable_1
2、一样的事理,利用INSERTINTO..SELECT的时分也无效。
DECLARE@nINT
SET@n=1000
SETROWCOUNT@n
INSERTINTOTable_2(colname1)
SELECTcolname1=colname2FROMTable_1
实行的了局将同等于
INSERTINTOTable_2(colname1)
SELECTTOP1000colname1=colname2FROMTable_1

3、实行UPDATE和DELETE。
由于UPDATE和DELETE没法间接利用ORDERBY语法,假设利用ROWCOUNT,将依照主键按次夙昔今后操纵。
DECLARE@nINT
SET@n=1000
SETROWCOUNT@n
DELETEFROMTable_1

不外也有办理举措,只需可以利用ORDERBY关键字就能够了,好比说间接用含ORDERBY的子句,大概先利用ORDERBY语法把必要操纵的标识列存为一个一时表或表变量,然后再操纵语句中利用IN或EXISTS关键字。
DECLARE@nINT
SET@n=1000
SETROWCOUNT@n
DECLARE@tTABLE(IDINT)
INSERTINTO@t
SELECTIDFROMTable_1ORDERBYcolname[ASC/DESC]
DELETEFROMTable_1WHEREIDIN(SELECTIDFROM@t)

4、关于ROWCOUNT的设置是与Session有关的。假设占用了一个Session,那末对应的这个数据库Session将利用比来一次设置的ROWCOUNT,直到Session停止大概修正了ROWCOUNT。
5、在用户自界说函数中不克不及利用ROWCOUNT。
6、作废ROWCOUNT。
我不晓得为何在联机匡助中说,写存储历程的时分应当注意只管制止利用ROWCOUNT,而倡议利用TOP。岂非MS不晓得TOP关键前面的数字不克不及为变量吗?大概MS是出于忧虑开辟者健忘了作废ROWCOUNT而影响一般的完成。
利用如许的语句便可作废ROWCOUNT了。
SETROWCOUNT0

8、总结
利用ROWCOUNT以后能够很便利的办理TOP关键字不克不及带变量的成绩,如许,关于必要排序取值的成绩就对照容易办理了。制止了利用EXEC来实行机关SQL语句,调试存储历程的时分也要便利良多。独一不便利的是,没有找到猎取以后ROWCOUNT值的举措,但细心想来,失掉这个值的用途也其实不年夜。

在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的:
老尸 该用户已被删除
沙发
发表于 2015-1-18 12:53:38 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-25 16:54:53 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
再见西城 该用户已被删除
地板
发表于 2015-2-3 11:54:29 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
简单生活 该用户已被删除
5#
发表于 2015-2-8 22:04:42 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
小女巫 该用户已被删除
6#
发表于 2015-2-26 12:04:10 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-8 14:54:21 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
小妖女 该用户已被删除
8#
发表于 2015-3-16 03:46:34 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
柔情似水 该用户已被删除
9#
发表于 2015-3-22 20:02:58 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-9 05:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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