如何使用SQL Server遊標

2020-11-23 IT168

  【IT168 技術文檔】在資料庫開發過程中,當你檢索的數據只是一條記錄時,你所編寫的事務語句代碼往往使用SELECT INSERT 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?遊標為我們提供了一種極為優秀的解決方案。

  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 info
select * from info
--清除所有記錄
truncate table info
declare @i int
set @i=1
while @i<1000000
begin
insert into info values('Justin'+str(@i),'深圳'+str(@i))
set @i=@i+1
end

相關焦點

  • server sql 作業 使用專題及常見問題 - CSDN
    use masterGO/* --開啟sql server代理sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Agent XPs', 1; GO RECONFIGURE GO*/--定義創建作業
  • SQL Server 首次登陸 Linux 平臺
    更多細節,見 SQL Server 官方:https://www.microsoft.com/en-us/sql-server/sql-server-2017參考:VentureBeta、SQL Server看完本文有收穫?
  • SQL SERVER 參考:遊標(Cursor)的講解與實例
    每一個遊標必須有四個組成部分這四個關鍵部分必須符合下面的順序;  1.DECLARE 遊標  2.OPEN 遊標  3.從一個遊標中FETCH 信息  4.CLOSE 或DEALLOCATE 遊標  通常我們使用DECLARE 來聲明一個遊標聲明一個遊標主要包括以下主要內容:  遊標名字   數據來源(表和列
  • SQL遊標原理和使用方法
    在資料庫開發過程中,當你檢索的數據只是一條記錄時,你所編寫的事務語句代碼往往使用SELECT INSERT 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?遊標為我們提供了一種極為優秀的解決方案。
  • Oracle資料庫遊標使用方法
    【IT168技術文檔】  SQL是用於訪問Oracle資料庫的語言,PL/SQL擴展和加強了SQL的功能,它同時引入了更強的程序邏輯, 下面在本文中將對遊標的使用進行一下講解,希望可以和大家共同學習進步。  遊標字面理解就是遊動的光標。
  • SQL Server 2016新亮點全揭秘
    那麼,微軟又將如何實施自己的混合雲呢?  Hybrid Cloud Features  我們都知道, SQL Server 2016提供了Stretch Database功能,Stretch Database提供了把內部部署資料庫擴展到Azure SQL 資料庫的途徑,它支持資料庫將將使用頻率較高的數據存儲在本地,使用頻率低的數據存儲在Azure Cloud。
  • c使用sql server專題及常見問題 - CSDN
    為php添加 sqlsrv 擴展去微軟官網 https://www.microsoft.com/en-us/download/ 搜索php ,點擊 Microsoft Drivers for PHP for SQL Server 下載最新版的 sqlsrvXX.exe( 我下載的是SQLSRV32.EXE )運行解壓, 得到一堆DLL, 選取適合自己
  • 微軟 SQL Server 2016 SP1 發布
    克隆資料庫並不意味著在生產環境中使用。要查看是否已從調用clonedatabase生成資料庫,可以使用以下命令,選擇DATABASEPROPERTYEX('clonedb','isClone')。 返回值1為真,0為假。
  • 資料庫大戰,AWS又將目標瞄準了微軟SQL Server
    Andy Jassy在演講中告誡客戶,是時候「停止為你不需要的SQL Server許可證買單了」,言下之意是,他們不再需要為了繼續使用SQL Server而不斷向微軟支出成千上萬美元。  開源的Babelfish將比標準資料庫遷移服務走的更遠,Jassy說,它是一個轉換工具,所做的就是為SQL server專用的 SQL 語言(T-SQL)和通信協議提供轉換,任何人都可以通過它輕鬆切換到Amazon Aurora PostgreSQL。
  • 這個函數讓SQL效率提升99%
    可以在單個查詢中將多個排名或聚合窗口函數與單個 FROM 子句一起使用。窗口函數是整個SQL語句最後被執行的部分,這意味著窗口函數是在SQL查詢的結果集上進行的, 因此不會受到Group By, Having,Where子句的影響。
  • SQL Server2008中的9種數據挖掘算法淺析
    【IT168 技術文檔】  在sql server2008中提供了9種常用的數據挖掘算法,這些算法用在不同數據挖掘的應用場景下,下面我們就各個算法逐個分析討論。  1.決策樹算法  決策樹,又稱判定樹,是一種類似二叉樹或多叉樹的樹結構。
  • 三方法解決SQL Server與雲端資料庫連接
    用戶可以使用現有的T-SQL和關係型資料庫知識與工具,在雲端方便地構建自己的資料庫服務。  SQL Azure上創建資料庫伺服器的步驟比較簡單,如果沒有創建可以在登錄到https://windows.azure.com/ 上,不過現在由於已經商用,所以需要購買。
  • 最詳細的SQL注入相關的命令整理
    偶然間我想到了在SQL語言中可以使用"in"關鍵字進行查詢,例如"select * from mytable where id in(1)",括號中的值就是我們提交的數據,它的結果與使用"select * from mytable where id=1"的查詢結果完全相同。
  • R+SQL Server的大數據管理
    在學習和使用R語言的過程中,在數據文件的選擇方面,由於csv文件在各大資料庫軟體以及統計分析軟體都有很好的兼容性,所以一直被廣泛地用作數據儲存傳輸
  • sqlserver——with as使用方法和注意事項
    目前手頭上的項目使用的資料庫是微軟的sql server2012,前兩天在項目開發中涉及到遞歸查詢和多張表的聯合查詢的應用場景,因此了解並使用了sql server 的with as,以下作為記錄什麼是with as
  • 遊標卡尺的使用方法
    遊標卡尺的使用方法:應用遊標讀數原理製成的量具有遊標卡尺、遊標量角尺、深度遊標卡尺、高度遊標卡尺、齒厚遊標卡尺等,以測量外徑、內徑、寬度、高度、深度、厚度、長度、角度以及齒輪的齒厚等,應用範圍很廣泛。量具的使用是否合理,不僅會影響量具本身的精度,還會直接影響零件尺寸的量測精度,有可能會發生質量事故,給我國造成不必要的損失,因此,必須注意正確使用測量工具,對測量技術精益求精,並確保獲得正確的測量結果,以保障產品質量。
  • SQL Server資料庫編程基本語法匯總
    set @a=5  print @a  --使用ST_User where ID=1  print @user2  --使用for select ID,Oid,[Login] from ST_User  --打開遊標
  • 遊標卡尺的介紹及使用方法!
    遊標卡尺的概述遊標卡尺作為一種被廣泛使用的高精度測量工具,它是由主尺和附在主尺上能滑動的遊標兩部分構成。如果按遊標的刻度值來分,遊標卡尺又分0.1、0.05、0.02mm三種。副尺0 線後的第9條線表示: 0.02x9= 0.18mm所以被測工件的尺寸為: 64+0.18=64.18mm遊標卡尺的使用方法將量爪併攏,查看遊標和主尺身的零刻度線是否對齊。
  • 遊標卡尺的使用方法—乾貨
    卡尺使用前應擦淨量爪,並將兩量爪合攏,檢查這時主、遊標尺零刻線是否重合,若不重合,則在以後測量中應根據這個起始誤差修正各讀數。用遊標卡尺測量時,應使量爪逐漸靠近零件表面,最後達到輕微接觸,以防量爪變形或磨損,從而影響測量精度。讀數時要正視尺身與遊標對準的刻線,不要造成斜視誤差,測量同一個點有2~3個接近的數值時,應取算術平均值作為測量結果。量具使用完畢後必須揩淨上油,妥善保管。
  • 遊標卡尺的介紹及使用方法
    遊標卡尺的概述遊標卡尺作為一種被廣泛使用的高精度測量工具,它是由主尺和附在主尺上能滑動的遊標兩部分構成。如果按遊標的刻度值來分,遊標卡尺又分0.1、0.05、0.02mm三種。副尺0 線後的第9條線表示: 0.02x9= 0.18mm所以被測工件的尺寸為: 64+0.18=64.18mm遊標卡尺的使用方法將量爪併攏,查看遊標和主尺身的零刻度線是否對齊。