国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sqlserver游標基本概念到生命周期的詳細學習(sql游標讀取)

2020-01-28 15:47:31
字體:
來源:轉載
供稿:網友
在關系數據庫中,我們對于查詢的思考是面向集合的。而游標打破了這一規則,游標使得我們思考方式變為逐行進行.對于類C的開發人員來著,這樣的思考方式會更加舒服。

正常面向集合的思維方式是:

2

而對于游標來說:

3

這也是為什么游標是邪惡的,它會使開發人員變懶,懶得去想用面向集合的查詢方式實現某些功能.

同樣的,在性能上,游標會吃更多的內存,減少可用的并發,占用寬帶,鎖定資源,當然還有更多的代碼量……

從游標對數據庫的讀取方式來說,不難看出游標為什么占用更多的資源,打個比方:

1

當你從ATM取錢的時候,是一次取1000效率更高呢,還是取10次100?

既然游標這么“邪惡”,為什么還要學習游標

我個人認為存在既是合理.歸結來說,學習游標原因我歸納為以下2點

1.現存系統有一些游標,我們查詢必須通過游標來實現

2.作為一個備用方式,當我們窮盡了while循環,子查詢,臨時表,表變量,自建函數或其他方式扔來無法實現某些查詢的時候,使用游標實現.

T-SQL中游標的生命周期以及實現

在T-SQL中,游標的生命周期由5部分組成

1.定義一個游標

在T-SQL中,定義一個游標可以是非常簡單,也可以相對復雜,取決于游標的參數.而游標的參數設置取決于你對游標原理的了解程度.

游標其實可以理解成一個定義在特定數據集上的指針,我們可以控制這個指針遍歷數據集,或者僅僅是指向特定的行,所以游標是定義在以Select開始的數據集上的:

4

T-SQL中的游標定義在MSDN中如下:


復制代碼代碼如下:
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
[;]


看起來很讓人頭痛是吧.下面仔細講一下如何定義游標:

游標分為游標類型和游標變量,對于游標變量來說,遵循T-SQL變量的定義方法(啥,不知道T-SQL變量定義的規則?參考我前面的博文).游標變量支持兩種方式賦值,定義時賦值和先定義后賦值,定義游標變量像定義其他局部變量一樣,在游標前加”@”,注意,如果定義全局的游標,只支持定義時直接賦值,并且不能在游標名稱前面加“@”,兩種定義方式如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 酒泉市| 石首市| 梁平县| 山西省| 竹山县| 姜堰市| 华安县| 仙游县| 辽中县| 衡南县| 伽师县| 富阳市| 正镶白旗| 潮州市| 巧家县| 托克托县| 嘉定区| 中西区| 和龙市| 邵阳县| 平定县| 云梦县| 鄂温| 汝南县| 七台河市| 纳雍县| 健康| 台安县| 镶黄旗| 科尔| 天柱县| 湄潭县| 广饶县| 科尔| 棋牌| 八宿县| 团风县| 北川| 保靖县| 山东| 澳门|