|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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个文件是很重要的: |
|