自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

游標(biāo)為何物,請你看這里

數(shù)據(jù)庫 SQL Server
昨天小編分享兩篇關(guān)于游標(biāo)的文章:游標(biāo)腳本性能問題詳解之案例實(shí)踐篇,游標(biāo)腳本性能問題詳解之游標(biāo)分類特點(diǎn)篇 ,并在文章中簡單對游標(biāo)做了說明。今天小編找到了一篇具體介紹游標(biāo)的博文,在這里與大家一起學(xué)習(xí)。

昨天小編分享兩篇關(guān)于游標(biāo)的文章:游標(biāo)腳本性能問題詳解之案例實(shí)踐篇,游標(biāo)腳本性能問題詳解之游標(biāo)分類特點(diǎn)篇 ,并在文章中簡單對游標(biāo)做了說明。今天小編找到了一篇具體介紹游標(biāo)的博文,在這里與大家一起學(xué)習(xí)。

游標(biāo)(cursor)

游標(biāo)是系統(tǒng)為用戶開設(shè)的一個數(shù)據(jù)緩沖區(qū),存放SQL語句的執(zhí)行結(jié)果。每個游標(biāo)區(qū)都有一個名字。用戶可以用SQL語句逐一從游標(biāo)中獲取記錄,并賦給主變量,交由主語言進(jìn)一步處理。主語言是面向記錄的,一組主變量一次只能存放一條記錄。僅使用主變量并不能完全滿足SQL語句向應(yīng)用程序輸出數(shù)據(jù)的要求。嵌入式SQL引入了游標(biāo)的概念,用來協(xié)調(diào)這兩種不同的處理方式

在數(shù)據(jù)庫開發(fā)過程中,當(dāng)你檢索的數(shù)據(jù)只是一條記錄時(shí),你所編寫的事務(wù)語句代碼往往使用SELECT INSERT 語句。但是我們常常會遇到這樣情況,即從某一結(jié)果集中逐一地讀取一條記錄。那么如何解決這種問題呢?游標(biāo)為我們提供了一種極為優(yōu)秀的解決方案。

1.游標(biāo)和游標(biāo)的優(yōu)點(diǎn)

在數(shù)據(jù)庫中,游標(biāo)是一個十分重要的概念。游標(biāo)提供了一種對從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段,就本質(zhì)而言,游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。游標(biāo)總是與一條SQL 選擇語句相關(guān)聯(lián)因?yàn)橛螛?biāo)由結(jié)果集(可以是零條、一條或由相關(guān)的選擇語句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標(biāo)位置組成。當(dāng)決定對結(jié)果集進(jìn)行處理時(shí),必須聲明一個指向該結(jié)果集的游標(biāo)。如果曾經(jīng)用 C 語言寫過對文件進(jìn)行處理的程序,那么游標(biāo)就像您打開文件所得到的文件句柄一樣,只要文件打開成功,該文件句柄就可代表該文件。對于游標(biāo)而言,其道理是相同的。可見游標(biāo)能夠?qū)崿F(xiàn)按與傳統(tǒng)程序讀取平面文件類似的方式處理來自基礎(chǔ)表的結(jié)果集,從而把表中數(shù)據(jù)以平面文件的形式呈現(xiàn)給程序。

我們知道關(guān)系數(shù)據(jù)庫管理系統(tǒng)實(shí)質(zhì)是面向集合的,在MS SQL SERVER 中并沒有一種描述表中單一記錄的表達(dá)形式,除非使用where 子句來限制只有一條記錄被選中。因此我們必須借助于游標(biāo)來進(jìn)行面向單條記錄的數(shù)據(jù)處理。由此可見,游標(biāo)允許應(yīng)用程序?qū)Σ樵冋Z句select 返回的行結(jié)果集中每一行進(jìn)行相同或不同的操作,而不是一次對整個結(jié)果集進(jìn)行同一種操作;它還提供對基于游標(biāo)位置而對表中數(shù)據(jù)進(jìn)行刪除或更新的能力;而且,正是游標(biāo)把作為面向集合的數(shù)據(jù)庫管理系統(tǒng)和面向行的程序設(shè)計(jì)兩者聯(lián)系起來,使兩個數(shù)據(jù)處理方式能夠進(jìn)行溝通。

2. 游標(biāo)種類

MS SQL SERVER 支持三種類型的游標(biāo):Transact_SQL 游標(biāo),API 服務(wù)器游標(biāo)和客戶游標(biāo)。

(1) Transact_SQL 游標(biāo)

Transact_SQL 游標(biāo)是由DECLARE CURSOR 語法定義、主要用在Transact_SQL 腳本、存儲過程和觸發(fā)器中。Transact_SQL 游標(biāo)主要用在服務(wù)器上,由從客戶端發(fā)送給服務(wù)器的Transact_SQL 語句或是批處理、存儲過程、觸發(fā)器中的Transact_SQL 進(jìn)行管理。 Transact_SQL 游標(biāo)不支持提取數(shù)據(jù)塊或多行數(shù)據(jù)。

(2) API 游標(biāo)

API 游標(biāo)支持在OLE DB, ODBC 以及DB_library 中使用游標(biāo)函數(shù),主要用在服務(wù)器上。每一次客戶端應(yīng)用程序調(diào)用API 游標(biāo)函數(shù),MS SQL SEVER 的OLE DB 提供者、ODBC驅(qū)動器或DB_library 的動態(tài)鏈接庫(DLL) 都會將這些客戶請求傳送給服務(wù)器以對API游標(biāo)進(jìn)行處理。

(3) 客戶游標(biāo)

客戶游標(biāo)主要是當(dāng)在客戶機(jī)上緩存結(jié)果集時(shí)才使用。在客戶游標(biāo)中,有一個缺省的結(jié)果集被用來在客戶機(jī)上緩存整個結(jié)果集??蛻粲螛?biāo)僅支持靜態(tài)游標(biāo)而非動態(tài)游標(biāo)。由于服務(wù)器游標(biāo)并不支持所有的Transact-SQL 語句或批處理,所以客戶游標(biāo)常常僅被用作服務(wù)器游標(biāo)的輔助。因?yàn)樵谝话闱闆r下,服務(wù)器游標(biāo)能支持絕大多數(shù)的游標(biāo)操作。由于API 游標(biāo)和Transact-SQL 游標(biāo)使用在服務(wù)器端,所以被稱為服務(wù)器游標(biāo),也被稱為后臺游標(biāo),而客戶端游標(biāo)被稱為前臺游標(biāo)。在本章中我們主要講述服務(wù)器(后臺)游標(biāo)

游標(biāo)詳細(xì)說明:

RS.OPEN SQL,CONN,A,B

參數(shù)A為設(shè)定游標(biāo)的類型,其取值為:

0 僅向前游標(biāo),只能向前瀏覽記錄,不支持分頁、Recordset、BookMark

1 鍵集游標(biāo),其他用戶對記錄說做的修改將反映到記錄集中,但其他用戶增加或刪除記錄不會反映到記錄集中。支持分頁、Recordset、BookMark

2 動態(tài)游標(biāo)功能***,但耗資源也最多。用戶對記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽。

3 靜態(tài)游標(biāo),只是數(shù)據(jù)的一個快照,用戶對記錄說做的修改,增加或刪除記錄都不會反映到記錄集中。支持向前或向后移動。

參數(shù)B為記錄集的鎖定類型,其取值為:

1 鎖定類型,默認(rèn)的,只讀,不能作任何修改

2 當(dāng)編輯時(shí)立即鎖定記錄,最安全的方式

3 只有在調(diào)用Update方法時(shí)才鎖定記錄集,而在此前的其他操作仍可對當(dāng)前記錄進(jìn)行更改、插入和刪除等

4 當(dāng)編輯時(shí)記錄不會被鎖定,而更改、插入和刪除是在批處理方式下完成的

打開數(shù)據(jù)記錄集方法其實(shí)不止一種,但是我們用的最多的就是

rs.open sql,1,1的方法,可是后面的數(shù)字參數(shù)很多人不解其意,下面我們來介紹一下。

其實(shí)open方法后面有多個參數(shù)

CursorType LockType CommandType

比如 rs.open sql,1,1

也可以寫成

rs.cursorType = 1

rs.LockType = 1

rs.open sql

其中CursorType代表從一個表或者一個SQL查詢結(jié)果返回的記錄。

這個參數(shù)有四個值分別是:

adOpenForwardOnly 表示只允許在記錄集內(nèi)的記錄間往前移動。這個是缺省值。

adOpenKeyset 反映由其它用戶所做的對記錄的改變或者刪除動作,但并不反映由其它用戶做作的添加新記錄的動作。

adOpenDynamic 反映由其它用戶所做的對記錄的改變或者刪除動作,包括添加的新記錄

adOpenStatic 不反映其它用戶對記錄所做的修改,添加,刪除動作。

這四個值VBSCRIPT預(yù)定義位

adOpenForwardOnly = 0

adOpenKeyset = 1

adOpenDynamic = 2

adOpenStatic = 3

lockType 表示當(dāng)打開記錄集時(shí),數(shù)據(jù)提供者用于鎖定數(shù)據(jù)庫的類型:

adLockReadOnly 數(shù)據(jù)不能改變,這是缺省值!

adLockPessimistic 數(shù)據(jù)提供者在開始編輯數(shù)據(jù)的時(shí)候鎖定記錄

adLockOptimistic 僅當(dāng)調(diào)用update方法時(shí),數(shù)據(jù)提供者鎖定記錄

adLockBatchOptimistic 用于批處理修改

他們的常量值定義分別是:

adLockReadOnly = 1

adLockPessimistic = 2

adLockOptimistic = 3

adLockBatchOptimistic = 4

rs.open sql,conn,1,1 讀取記錄 select

rs.open sql,conn,1,3 只更新記錄*** update

rs.open sql,conn,2,3 插入和刪除*** insert delete

原文鏈接:http://www.cnblogs.com/cylee025/archive/2011/04/07/2007538.html

責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2011-07-04 10:59:22

HP惠普CloudSystem

2010-08-24 09:19:59

2013-03-05 13:46:46

IDC歐洲企業(yè)大數(shù)據(jù)

2018-08-16 09:00:44

2013-03-07 09:38:53

歐洲大數(shù)據(jù)IDC

2019-10-25 09:01:09

物聯(lián)網(wǎng)Wi-Fi通信

2019-11-21 06:10:30

物聯(lián)網(wǎng)移動應(yīng)用IOT

2019-08-14 14:54:19

MySQLPostgreSQL數(shù)據(jù)庫

2019-08-15 09:28:32

SQLNoSQLCPU

2017-10-17 09:55:16

數(shù)據(jù)庫SQL Server規(guī)范集錦

2014-11-05 10:08:50

2020-03-06 10:33:01

網(wǎng)絡(luò)欺詐在線支付網(wǎng)絡(luò)安全

2022-08-26 12:46:04

NQA網(wǎng)絡(luò)質(zhì)量分析

2019-06-05 07:42:31

2021-03-31 06:37:03

WiFi 6路由器WiFi 5

2015-12-08 10:23:23

SDN軟件定義網(wǎng)絡(luò)

2022-09-08 07:32:56

JDK7程序管理

2019-09-16 09:49:49

數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)SQL

2019-03-21 12:42:18

華為云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號