亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL SERVER的ROWCOUNT關(guān)鍵字

瀏覽:135日期:2023-11-01 17:11:12

因?yàn)檠鐾鸒RACLE,所以一直都以為SQL SERVER很笨。

據(jù)傳SQL 2005有了RowID的東西,可以解決TOP排序的問(wèn)題。可惜還沒(méi)有機(jī)會(huì)體驗(yàn)。在SQL 2000中寫(xiě)存儲(chǔ)過(guò)程,總會(huì)遇到需要TOP的地方,而一旦遇到TOP,因?yàn)闆](méi)辦法把TOP后面的數(shù)字作為變量寫(xiě)到預(yù)編譯的語(yǔ)句中去,所以只能夠使用構(gòu)造SQL,使用Exec來(lái)執(zhí)行。不說(shuō)效率的問(wèn)題,心里也總覺(jué)得這個(gè)辦法很笨。

實(shí)際上,在SQL 2000中完全可以使用ROWCOUNT關(guān)鍵字解決這個(gè)問(wèn)題。

ROWCOUNT關(guān)鍵字的用法在聯(lián)機(jī)幫助中有比較詳細(xì)的說(shuō)明,這兒就不羅嗦了。談?wù)勼w會(huì)。

1、使用ROWCOUNT查詢前幾行結(jié)果。

DECLARE @n INTSET @n = 1000SET ROWCOUNT @nSELECT * FROM Table_1

這樣,查詢結(jié)果將等同于

SELECT TOP 100 FROM Table_1

2、同樣的道理,使用INSERT INTO..SELECT的時(shí)候也有效。

DECLARE @n INTSET @n = 1000SET ROWCOUNT @nINSERT INTO Table_2 (colname1)SELECT colname1=colname2 FROM Table_1

執(zhí)行的結(jié)果將等同于

INSERT INTO Table_2(colname1)SELECT TOP 1000 colname1 = colname2 FROM Table_1

3、執(zhí)行UPDATE和DELETE。

因?yàn)閁PDATE和DELETE無(wú)法直接使用ORDER BY語(yǔ)法,如果使用ROWCOUNT,將按照主鍵順序從前往后操作。

DECLARE @n INTSET @n = 1000SET ROWCOUNT @nDELETE FROM Table_1

不過(guò)也有解決辦法,只要能夠使用ORDER BY關(guān)鍵字就可以了,比如說(shuō)直接用含ORDER BY的子句,或者先使用ORDER BY語(yǔ)法把需要操作的標(biāo)識(shí)列存為一個(gè)臨時(shí)表或表變量,然后再操作語(yǔ)句中使用IN或EXISTS關(guān)鍵字。

DECLARE @n INTSET @n = 1000SET ROWCOUNT @nDECLARE @t TABLE(ID INT)INSERT INTO @tSELECT ID FROM Table_1 ORDER BY colname [ASC/DESC]

DELETE FROM; Table_1 WHERE ID IN (SELECT ID FROM @t)

4、對(duì)于ROWCOUNT的設(shè)置是與Session有關(guān)的。如果占用了一個(gè)Session,那么對(duì)應(yīng)的這個(gè)數(shù)據(jù)庫(kù)Session將使用最近一次設(shè)置的ROWCOUNT,直到Session結(jié)束或者修改了ROWCOUNT。

5、在用戶自定義函數(shù)中不能使用ROWCOUNT。

6、取消ROWCOUNT。

我不知道為什么在聯(lián)機(jī)幫助中說(shuō),寫(xiě)存儲(chǔ)過(guò)程的時(shí)候應(yīng)該注意盡量避免使用ROWCOUNT,而建議使用TOP。難道MS不知道TOP關(guān)鍵后面的數(shù)字不能為變量嗎?也許MS是出于擔(dān)心開(kāi)發(fā)者忘記了取消ROWCOUNT而影響正常的實(shí)現(xiàn)。

使用這樣的語(yǔ)句即可取消ROWCOUNT了。

SET ROWCOUNT 0

8、總結(jié)

使用ROWCOUNT之后可以很方便的解決TOP關(guān)鍵字不能帶變量的問(wèn)題,這樣,對(duì)于需要排序取值的問(wèn)題就比較容易解決了。避免了使用EXEC來(lái)執(zhí)行構(gòu)造SQL語(yǔ)句,調(diào)試存儲(chǔ)過(guò)程的時(shí)候也要方便很多。唯一不方便的是,沒(méi)有找到獲取當(dāng)前ROWCOUNT值的辦法,但仔細(xì)想來(lái),得到這個(gè)值的用處也并不大。

主站蜘蛛池模板: 88国产精品视频一区二区三区 | 欧美色视频日本片免费高清 | 国产亚洲精品国看不卡 | 亚洲第一区精品日韩在线播放 | 国产成人精视频在线观看免费 | 久草视频2 | 国产精品视频大全 | 国产美女91视频 | 成人午夜又粗又硬有大 | 精品在线免费播放 | 亚洲欧洲精品成人久久曰影片 | 亚洲国产精品区 | 视频一区二区三区在线 | 欧美亚洲综合另类在线观看 | 香蕉久久高清国产精品免费 | 国产l精品国产亚洲区在线观看 | 亚洲欧美人成人让影院 | 日韩在线不卡一区在线观看 | 在线看片 在线播放 | 成人精品视频 成人影院 | 亚洲欧美91 | 一97日本道伊人久久综合影院 | 国产91在线精品 | 国产黄色自拍 | 亚洲免费在线 | 国产日韩欧美一区 | 一级做受毛片免费大片 | 国产午夜精品一二区理论影院 | 谁有免费的黄色网址 | 亚洲精品视频免费在线观看 | 亚洲欧美国产另类 | 国产经典一区 | 国产视频 一区二区 | 欧美一区二区在线 | 国产不卡视频 | 欧美日本三级 | 妇女激情毛片 | 福利视频第一区 | 一级做a爱片久久毛片 | 国产精品久久久久这里只有精品 | 老师的丰满大乳奶水视频 |