av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

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

因為仰望ORACLE,所以一直都以為SQL SERVER很笨。

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

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

ROWCOUNT關(guān)鍵字的用法在聯(lián)機幫助中有比較詳細的說明,這兒就不羅嗦了。談談體會。

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

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

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

SELECT TOP 100 FROM Table_1

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

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。

因為UPDATE和DELETE無法直接使用ORDER BY語法,如果使用ROWCOUNT,將按照主鍵順序從前往后操作。

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

不過也有解決辦法,只要能夠使用ORDER BY關(guān)鍵字就可以了,比如說直接用含ORDER BY的子句,或者先使用ORDER BY語法把需要操作的標識列存為一個臨時表或表變量,然后再操作語句中使用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、對于ROWCOUNT的設置是與Session有關(guān)的。如果占用了一個Session,那么對應的這個數(shù)據(jù)庫Session將使用最近一次設置的ROWCOUNT,直到Session結(jié)束或者修改了ROWCOUNT。

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

6、取消ROWCOUNT。

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

使用這樣的語句即可取消ROWCOUNT了。

SET ROWCOUNT 0

8、總結(jié)

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

主站蜘蛛池模板: 日韩精品在线视频 | 中文字幕一区二区三区乱码 | 国产一级在线视频 | 免费成人小视频 | 日韩黄色一级 | www国产| 亚洲国产精品久久久 | 欧美日韩在线一区二区 | 97青青草| 日本在线一区二区三区 | 欧美三级 欧美一级 | 国产精品毛片久久久久久久 | 日韩一级大片 | 曰韩毛片| 国产精品久久久国产盗摄 | 欧美性猛交xxxx | 国产午夜av | 成人毛片在线观看 | 亚洲综合伊人 | 伊人国产精品 | 九九九视频 | 欧美日韩a | 中文一区二区 | 天堂8中文 | 精品国产999久久久免费 | 日韩中文视频 | 黄色福利网站 | 日韩黄色一级 | 成人爱爱 | 国产白丝精品91爽爽久久 | 日本不卡中文字幕 | 日韩久久精品 | 午夜国产福利 | 少妇高潮久久久久久潘金莲 | 天天摸天天爽 | 亚洲精品999| 九九九九精品 | 国产精品欧美精品 | 国产免费观看视频 | 欧美精品乱码视频一二专区 | 91精品国产成人www |