游標(biāo)(cursor)是一個(gè)存儲(chǔ)在 DBMS 服務(wù)器上的數(shù)據(jù)庫查詢, 它不是一條 SELECT 語句态兴,而是被該語句檢索出來的結(jié)果集岖瑰。在存儲(chǔ)了 游標(biāo)之后杀怠,應(yīng)用程序可以根據(jù)需要滾動(dòng)或?yàn)g覽其中的數(shù)據(jù)排龄。
我們通常的檢索操作會(huì)返回一組稱為結(jié)果集的行,如
SELECT DISTINCT file_name ,file_path FROM "adjunctlist"
那么如何在DBMS中獲取游標(biāo)呢如暖?
使用游標(biāo)涉及幾個(gè)明確的步驟
1笆檀、聲明
在使用游標(biāo)前,必須聲明(定義)它盒至。這個(gè)過程實(shí)際上沒有檢索數(shù)據(jù)酗洒, 它只是定義要使用的 SELECT 語句和游標(biāo)選項(xiàng)。
2枷遂、打開游標(biāo)
一旦聲明樱衷,就必須打開游標(biāo)以供使用。這個(gè)過程用前面定義的 SELECT 語句把數(shù)據(jù)實(shí)際檢索出來登淘。
3箫老、關(guān)閉游標(biāo)
在結(jié)束游標(biāo)使用時(shí),必須關(guān)閉游標(biāo)黔州,可能的話耍鬓,釋放游標(biāo)(有賴于具 體的 DBMS)阔籽。
在DBMS中創(chuàng)建游標(biāo)
使用 DECLARE 語句創(chuàng)建游標(biāo),這條語句在不同的 DBMS 中有所不同牲蜀。
DECLARE 命名游標(biāo)笆制,并定義相應(yīng)的 SELECT 語句,根據(jù)需要帶 WHERE 和 其他子句涣达。
- DB2在辆、MariaDB、MySQL和 SQL Server
DECLARE CustCursor CURSOR
FOR
SELECT * FROM Customers WHERE cust_email IS NULL
- Oracle和 PostgreSQL
DECLARE CURSOR CustCursor
IS
SELECT * FROM Customers WHERE cust_email IS NULL
使用游標(biāo)
先打開游標(biāo)
OPEN CURSOR CustCursor
打開游標(biāo)后度苔,用 FETCH 語句訪問游標(biāo)數(shù)據(jù)匆篓。
FETCH 指出要檢索哪些行,從 何處檢索它們以及將它們放于何處(如變量名)
》》》》》》》使用寇窑,未完待續(xù)《《《《《《《
關(guān)閉游標(biāo)
- DB2鸦概、Oracle 和 PostgreSQL
CLOSE CustCursor
- SQL Server
CLOSE CustCursor
DEALLOCATE CURSOR CustCursor
CLOSE 語句用來關(guān)閉游標(biāo)。一旦游標(biāo)關(guān)閉甩骏,如果不再次打開窗市,將不能使 用。
第二次使用它時(shí)不需要再聲明饮笛,只需用 OPEN 打開它即可咨察。