ROWCOUNT的申明
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。setROWCOUNT10select*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
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个文件是很重要的: XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 你可以简单地认为适合的就是好,不适合就是不好。 如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。 varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。 你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。 如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。 一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
页:
[1]