導航:首頁 > IDC知識 > 伺服器游標

伺服器游標

發布時間:2021-03-30 08:12:40

1、SQL 資料庫中的游標指的是什麼,有什麼作用?

簡單來說,游標就是一個臨時存儲器。SQL處理數據時,總是對整個數據集打包給你,而不會逐條給你,而游標就是將SQL打包的數據集進行二次處理,使得你能夠逐條對數據修改和處理。就是將機器的死腦經變的更人性化一點,滿足人們的日常需要(哈哈哈,皮一下!)

2、求JAVA ORACLE伺服器游標實現分頁的完整實例

1、首先建立一個包,用戶創建一個游標類型create or replace package pkg_query as
type cur_query is ref cursor;
end pkg_query;2、創建存儲過程CREATE OR REPLACE PROCEDURE prc_query
(p_tableName in varchar2, --表名
p_strWhere in varchar2, --查詢條件
p_orderColumn in varchar2, --排序的列
p_orderStyle in varchar2, --排序方式
p_curPage in out Number, --當前頁
p_pageSize in out Number, --每頁顯示記錄條數
p_totalRecords out Number, --總記錄數
p_totalPages out Number, --總頁數
v_cur out pkg_query.cur_query) --返回的結果集
IS
v_sql VARCHAR2(1000) := ''; --sql語句
v_startRecord Number(4); --開始顯示的記錄條數
v_endRecord Number(4); --結束顯示的記錄條數
BEGIN
--記錄中總記錄條數
v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM ' || p_tableName || ' WHERE 1=1';
IF p_strWhere IS NOT NULL or p_strWhere <> '' THEN
v_sql := v_sql || p_strWhere;
END IF;
EXECUTE IMMEDIATE v_sql INTO p_totalRecords;

--驗證頁面記錄大小
IF p_pageSize < 0 THEN
p_pageSize := 0;
END IF;

--根據頁大小計算總頁數
IF MOD(p_totalRecords,p_pageSize) = 0 THEN
p_totalPages := p_totalRecords / p_pageSize;
ELSE
p_totalPages := p_totalRecords / p_pageSize + 1;
END IF;

--驗證頁號
IF p_curPage < 1 THEN
p_curPage := 1;
END IF;
IF p_curPage > p_totalPages THEN
p_curPage := p_totalPages;
END IF;

--實現分頁查詢
v_startRecord := (p_curPage - 1) * p_pageSize + 1;
v_endRecord := p_curPage * p_pageSize;
v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM ' ||
'(SELECT * FROM ' || p_tableName;
IF p_strWhere IS NOT NULL or p_strWhere <> '' THEN
v_sql := v_sql || ' WHERE 1=1' || p_strWhere;
END IF;
IF p_orderColumn IS NOT NULL or p_orderColumn <> '' THEN
v_sql := v_sql || ' ORDER BY ' || p_orderColumn || ' ' || p_orderStyle;
END IF;
v_sql := v_sql || ') A WHERE rownum <= ' || v_endRecord || ') B WHERE r >= '
|| v_startRecord;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;
END prc_query;3、JAVA代碼里取出結果集String sql= "{ call prc_query(?,?,?,?,?,?,?,?,?) }";
CallableStatement call = con.prepareCall(sql);// ……中間數據設置及注冊省略call.registerOutParameter(9, OracleTypes.CURSOR);// 取出結果集(ResultSet) call.getObject(9);

3、什麼是游標?使用游標的基本步驟是什麼?

游標(cursor)是系統為用戶開設的一個數據緩沖區,存放SQL語句的執行結果。每個游標區都有一個名字,用戶可以用SQL語句逐一從游標中獲取記錄,並賦給主變數,交由主語言進一步處理。游標提供了一種對從表中檢索出的數據進行操作的靈活手段。
使用游標的基本步驟:
1、聲明游標。把游標與T-SQL語句的結果集聯系起來。
2、打開游標。
3、使用游標操作數據。
4、關閉游標。
功能:
1、游標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
2、游標能夠實現按與傳統程序讀取平面文件類似的方式處理來自基礎表的結果集,從而把表中數據以平面文件的形式呈現給程序。
3、游標把作為面向集合的資料庫管理系統和面向行的程序設計兩者聯系起來,使兩個數據處理方式能夠進行溝通。
種類:
1、Transact_SQL游標
Transact_SQL游標是由DECLARECURSOR語法定義、主要用在Transact_SQL腳本、存儲過程和觸發器中。Transact_SQL游標主要用在伺服器上,由從客戶端發送給伺服器的Transact_SQL語句或是批處理、存儲過程、觸發器中的Transact_SQL進行管理。Transact_SQL游標不支持提取數據塊或多行數據。
2、API游標
API游標支持在OLEDB,ODBC以及DB_library中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用API游標函數,MSSQLSEVER的OLEDB提供者、ODBC驅動器或DB_library的動態鏈接庫(DLL)都會將這些客戶請求傳送給伺服器以對API游標進行處理。
3、客戶游標
客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於伺服器游標並不支持所有的Transact-SQL語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。因為在一般情況下,伺服器游標能支持絕大多數的游標操作。由於API游標和Transact-SQL游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。

4、游標的作用是什麼?

游標在處理數據中提供了在結果集中一次一行或者多行前進或向後瀏覽數據的能力,可以把游標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。

游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。游標可以被看作是一個查詢結果集和結果集中指向特定記錄的游標位置組成的一個臨時文件,提供了在查詢結果集中向前或向後瀏覽數據、處理結果集中數據的能力。

有了游標,用戶就可以訪問結果集中任意一行數據,在將游標放置到某行之後,可以在該行或從該位置的行塊上執行操作。

(4)伺服器游標擴展資料

游標的類型

MS SQL SERVER 支持三種類型的游標:Transact_SQL 游標,API伺服器游標和客戶游標。

1、Transact_SQL 游標

Transact_SQL 游標由DECLARE CURSOR 語法定義、主要用在Transact_SQL腳本、存儲過程和觸發器中。Transact_SQL 游標主要用在伺服器上,由從客戶端發送給伺服器的Transact_SQL 語句或是批處理、存儲過程、觸發器中的Transact_SQL 進行管理。

2、API游標

API 游標支持在OLE DB, ODBC 以及DB_library 中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用API 游標函數,MS SQL SEVER 的OLE DB 提供者、ODBC驅動器或DB_library 的動態鏈接庫都會將這些客戶請求傳送給伺服器以對API游標進行處理。

3、客戶游標

客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於API 游標和Transact-SQL 游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。

5、Sql中的游標是幹嘛的

游標(Cursor)是處理數據的一種方法,為了查看或者處理結果集中的數據,游標提供了在結果集中一次一行或者多行前進或向後瀏覽數據的能力。可以把游標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。

(5)伺服器游標擴展資料

MS SQL SERVER 支持三種類型的游標:Transact_SQL 游標,API伺服器游標和客戶游標。

1、Transact_SQL 游標

Transact_SQL 游標由DECLARE CURSOR 語法定義、主要用在Transact_SQL腳本、存儲過程和觸發器中。Transact_SQL 游標主要用在伺服器上,由從客戶端發送給伺服器的Transact_SQL 語句或是批處理、存儲過程、觸發器中的Transact_SQL 進行管理。 Transact_SQL 游標不支持提取數據塊或多行數據。

2、API游標

API 游標支持在OLE DB, ODBC 以及DB_library 中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用API 游標函數,MS SQL SEVER 的OLE DB 提供者、ODBC驅動器或DB_library 的動態鏈接庫(DLL) 都會將這些客戶請求傳送給伺服器以對API游標進行處理。

3、客戶游標

客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於伺服器游標並不支持所有的Transact-SQL語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。因為在一般情況下,伺服器游標能支持絕大多數的游標操作。由於API 游標和Transact-SQL 游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。

參考資料來源:網路—游標 (處理數據的一種方法)

6、使用游標的基本步驟是什麼?

游標(cursor)是系統為用戶開設的一個數據緩沖區,存放sql語句的執行結果。每個游標區都有一個名字,用戶可以用sql語句逐一從游標中獲取記錄,並賦給主變數,交由主語言進一步處理。游標提供了一種對從表中檢索出的數據進行操作的靈活手段。
使用游標的基本步驟:
1、聲明游標。把游標與t-sql語句的結果集聯系起來。
2、打開游標。
3、使用游標操作數據。
4、關閉游標。
功能:
1、游標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。
2、游標能夠實現按與傳統程序讀取平面文件類似的方式處理來自基礎表的結果集,從而把表中數據以平面文件的形式呈現給程序。
3、游標把作為面向集合的資料庫管理系統和面向行的程序設計兩者聯系起來,使兩個數據處理方式能夠進行溝通。
種類:
1、transact_sql游標
transact_sql游標是由declarecursor語法定義、主要用在transact_sql腳本、存儲過程和觸發器中。transact_sql游標主要用在伺服器上,由從客戶端發送給伺服器的transact_sql語句或是批處理、存儲過程、觸發器中的transact_sql進行管理。transact_sql游標不支持提取數據塊或多行數據。
2、api游標
api游標支持在oledb,odbc以及db_library中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用api游標函數,mssqlsever的oledb提供者、odbc驅動器或db_library的動態鏈接庫(dll)都會將這些客戶請求傳送給伺服器以對api游標進行處理。
3、客戶游標
客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於伺服器游標並不支持所有的transact-sql語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。因為在一般情況下,伺服器游標能支持絕大多數的游標操作。由於api游標和transact-sql游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。

7、如何設置游標選項 (ODBC)

若要設置游標選項,請調用SQLSetStmtAttr以設置或調用SQLGetStmtAttr,從而獲得控制游標行為的語句選項。Attribute指定SQL_ATTR_CURSOR_TYPE只進、靜態、動態或由鍵集驅動的游標類型SQL_ATTR_CONCURRENCY只讀、鎖定、樂觀使用時間戳或樂觀使用值的並發控制選項SQL_ATTR_ROW_ARRAY_SIZE在每個提取中檢索的行數SQL_ATTR_CURSOR_SENSITIVITY顯示或不顯示由其他連接對游標行進行的更新的游標SQL_ATTR_CURSOR_SCROLLABLE可以向前和向後滾動的游標這些屬性(只進、只讀、行集大小為 1)的默認值不使用伺服器游標。若要使用伺服器游標,必須將這些屬性中的至少一個屬性設置為非默認值,並且所執行的語句必須是包含單個 SELECT 語句的單個 SELECT 語句或存儲過程。使用伺服器游標時,SELECT 語句無法使用伺服器游標不支持的子句:COMPUTE、COMPUTE BY、FOR BROWSE 和 INTO。通過設置 SQL_ATTR_CURSOR_TYPE 和 SQL_ATTR_CONCURRENCY,或通過設置 SQL_ATTR_CURSOR_SENSITIVITY 和 SQL_ATTR_CURSOR_SCROLLABLE,可以控制所使用的游標類型。不應將指定游標行為的兩種方法混用。

8、什麼是游標?

游標:是處理數據的一種方法,為了查看或者處理結果集中的數據,游標提供了在結果集中一次一行或者多行前進或向後瀏覽數據的能力。可以把游標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。

(8)伺服器游標擴展資料:

游標分類

1、Transact_SQL 游標

Transact_SQL 游標由DECLARE CURSOR 語法定義、主要用在Transact_SQL腳本、存儲過程和觸發器中。Transact_SQL 游標主要用在伺服器上。

由從客戶端發送給伺服器的Transact_SQL 語句或是批處理、存儲過程、觸發器中的Transact_SQL 進行管理。 Transact_SQL 游標不支持提取數據塊或多行數據。

2、API游標

API 游標支持在OLE DB, ODBC 以及DB_library 中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用API 游標函數,MS SQL SEVER 的OLE DB 提供者、ODBC驅動器或DB_library 的動態鏈接庫(DLL) 都會將這些客戶請求傳送給伺服器以對API游標進行處理。

3、客戶游標

客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於伺服器游標並不支持所有的Transact-SQL語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。

因為在一般情況下,伺服器游標能支持絕大多數的游標操作。由於API 游標和Transact-SQL 游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。

9、如何使用SQL Server游標(一)

但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。 1.游標和游標的優點 在資料庫中,游標是一個十分重要的概念。游標提供了一種對從表中檢索出的數據進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。游標總是與一條T_SQL 選擇語句相關聯因為游標由結果集(可以是零條、一條或由相關的選擇語句檢索出的多條記錄)和結果集中指向特定記錄的游標位置組成。當決定對結果集進行處理時,必須聲明一個指向該結果集的游標。如果曾經用 C 語言寫過對文件進行處理的程序,那麼游標就像您打開文件所得到的文件句柄一樣,只要文件打開成功,該文件句柄就可代表該文件。對於游標而言,其道理是相同的。可見游標能夠實現按與傳統程序讀取平面文件類似的方式處理來自基礎表的結果集,從而把表中數據以平面文件的形式呈現給程序。 我們知道關系資料庫管理系統實質是面向集合的,在MS SQL SERVER 中並沒有一種描述表中單一記錄的表達形式,除非使用where 子句來限制只有一條記錄被選中。因此我們必須藉助於游標來進行面向單條記錄的數據處理。 由此可見,游標允許應用程序對查詢語句select 返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作;它還提供對基於游標位置而對表中數據進行刪除或更新的能力;而且,正是游標把作為面向集合的資料庫管理系統和面向行的程序設計兩者聯系起來,使兩個數據處理方式能夠進行溝通。 2.游標種類 MS SQL SERVER支持三種類型的游標:Transact_SQL 游標,API 伺服器游標和客戶游標。 (1)Transact_SQL游標 Transact_SQL游標是由DECLARE CURSOR語法定義、主要用在Transact_SQL 腳本、存儲過程和觸發器中。Transact_SQL 游標主要用在伺服器上,由從客戶端發送給伺服器的Transact_SQL 語句或是批處理、存儲過程、觸發器中的Transact_SQL 進行管理。 Transact_SQL 游標不支持提取數據塊或多行數據。 (2)API 游標 API 游標支持在OLE DB, ODBC 以及DB_library 中使用游標函數,主要用在伺服器上。每一次客戶端應用程序調用API 游標函數,MS SQL SEVER 的OLE DB 提供者、ODBC驅動器或DB_library 的動態鏈接庫(DLL) 都會將這些客戶請求傳送給伺服器以對API游標進行處理。 (3)客戶游標 客戶游標主要是當在客戶機上緩存結果集時才使用。在客戶游標中,有一個預設的結果集被用來在客戶機上緩存整個結果集。客戶游標僅支持靜態游標而非動態游標。由於伺服器游標並不支持所有的Transact-SQL 語句或批處理,所以客戶游標常常僅被用作伺服器游標的輔助。因為在一般情況下,伺服器游標能支持絕大多數的游標操作。 由於API 游標和Transact-SQL 游標使用在伺服器端,所以被稱為伺服器游標,也被稱為後台游標,而客戶端游標被稱為前台游標。在本章中我們主要講述伺服器(後台)游標。select count(id) from infoselect * from info--清除所有記錄

與伺服器游標相關的知識