1. 程式人生 > >SQL 遊標的使用(更新資料)

SQL 遊標的使用(更新資料)

一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,
如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到遊標或WHILE等迴圈

遊標的型別:  1、靜態遊標(不檢測資料行的變化)
  2
、動態遊標(反映所有資料行的改變)
  3
、僅向前遊標(不支援滾動)
  4
、鍵集遊標(能反映修改,但不能準確反映插入、刪除)

遊標使用順序:
   1
、定義遊標
   2
、開啟遊標
   3
、使用遊標
   4
、關閉遊標
   5
、釋放遊標

Transact-SQL
declare
遊標名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS] 
  for selet

語句   [for  update[of 列名[,列名]]
 
注:LOCAL 區域性遊標     GLOBAL 全域性遊標
     FORWARD_ONLY
僅向前  SCROLL 滾動
     STATIC
靜態  KEYSET 鍵集 DYNAMIC 動態
     READ_ONLY
只讀 SCROLL_LOCKS 鎖定遊標當前行

獲取遊標的資料
  FETCH [[NEXT | PRIOR | FIRST | LAST |
  ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
  From ]
遊標名 [into 變數]
 
注:
    NEXT 

下一行  PRIOR  上一行  FIRST 第一行
    LAST 
最後一行  ABSOLUTE n 第n行
    RELATIVE n
當前位置開始的第n行
    into
變數 把當前行的各欄位值賦值給變數

遊標狀態變數:
    @@fetch_status 
遊標狀態
         0
成功  -1 失敗  -2 丟失
    @@cursor_rows
遊標中結果集中的行數
        n
行數 -1 遊標是動態的  0 空集遊標操作遊標的當前行:
   current of
遊標名

例1:利用遊標對查詢的資料集進行遍歷

use pubs

go

declare @auid char(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)

declare auth_cur cursor for

select au_id, au_lname, au_fname, state

from authors

open auth_cur

fetch next from auth_cur into @auid,@aulname,@aufname, @st

while (@@fetch_status=0)

  begin

    print '作者編號: '[email protected]

    print '作者姓名: '[email protected]+','[email protected]

    print '所在州: '[email protected]

    print '--------------------------'

    fetch next from auth_cur into @auid,@aulname,@aufname, @st

  end

close auth_cur

deallocate auth_cur

例2:利用遊標修改、刪除資料

declare auth_cur cursor scroll for

select au_id, au_lname, au_fname, state

from authors for update of au_lname

open auth_cur

declare @rowcount int

set @rowcount = 6

fetch absolute @rowcount from auth_cur  --將變數@rowcount標識的行設定為當前行

--下面1行是利用遊標進行修改操作

update authors set au_lname='張' where current of auth_cur --修改遊標中的當前行

--下面1行是利用遊標進行刪除操作

delete from authors where current of auth_cur

相關推薦

SQL 遊標的使用更新資料

一般情況下,我們用SELECT這些查詢語句時,都是針對的一行記錄而言,如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到遊標或WHILE等迴圈 遊標的型別:  1、靜態遊標(不檢測資料行的變化)   2、動態遊標(反映所有資料行的改變)   3、僅向前遊

50個常用sql語句資料

Code: 50個常用SQL語句 Student(S#,Sname,Sage,Ssex) 學生表 S#學號,主鍵 Course(C#,Cname,T#) 課程表 C#課程號,主鍵 SC(S#,C#,score) 成績表 Teacher(T#,Tn

50個經典的sql語句資料

Code:       50個常用SQL語句              Student(S#,Sname,Sage,Ssex) 學生表  S#學號,主鍵       Course(C#,Cname,T#) 課程表          C#課程號,主鍵       SC(S#,C

SpringMVC_4_REST的GET得到資料、POST新增資料、DELETE刪除資料、PUT更新資料操作

REST REST:即 Representational State Transfer。**(資源)表現層狀態轉化。是目前最流行的一種網際網路軟體架構。**它結構清晰、符合標準、易於理解、擴充套件方便、所以正得到越來越多網站的採用 資源(Resources):**網路

Android 第十四課 使用LitePal新增資料更新資料

我們注意到當你登入一個app,是不是需要先註冊呢?,所謂註冊,簡單地來理解是不是就是把輸入框中地資料傳入資料庫中呢?這裡我們設定簡單一點,註冊的資訊只包括兩項,一項是使用者名稱,另一項是密碼。我們乾脆建立一個表Driveruser。在Android Studio 中新建一個j

Sql Server 遊標利用遊標逐行更新資料、儲存過程

遊標中用到的函式,就是前一篇文章中建立的那個函式。 另外,為了方便使用,把遊標放在儲存過程中,這樣就可以方便地直接使用儲存過程來執行遊標了。 1 create procedure UpdateHKUNo --儲存過程裡面放置遊標 2 as 3 begin 4

SQL的一些學習連結更新

1. group by https://www.cnblogs.com/jingfengling/p/5962182.html where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾資料,where條件中不能包含聚組函式,使用where條件過濾

python入門23 pymssql模組python連線sql server增刪改資料

增刪改資料必須connect.commit()才會生效  回滾函式 connect.rollback()   連線資料庫 ''' dinghanhua sql server增刪改 ''' import pymssql server = '192.168.1.1' user

資料閱讀更新

在舊金山召開的人工智慧國際頂級會議AAAI 2017上,來自微軟亞洲研究院的鄭宇博士及其團隊的論文Deep Spatio-Temporal Residual Networks for Citywide Crowd Flows Prediction首創性的將時空資料與深度學

記一次sql使用遊標迴圈更新資料

過程: ALTER PROCEDURE [dbo].[updateCode] AS BEGIN -- routine body goes here, e.g. -- SELECT 'Navicat for SQL Server' declare @gid

阿里雲大資料ACP認證知識點梳理4——基礎SQL語句DDL部分

creat table page_view (user_id bigint,view_time bigint,page_url string,referrer_url string,ip string comment 'creat table sql') partitioned by (dt string,c

阿里雲大資料ACP認證知識點梳理5——基礎SQL語句DML部分

insert overwrite table sale_detail_insert partition (sale_date='2013', region='china')insert into table sale_detail_insert partition (sale_date='2013', reg

sql系列基礎篇-前言 課前補充知識

ng- 2.0 .sql nbsp 值範圍 lease size cte file 前言 課前補充知識 Number(p,s) Number(p,s):數字類型,p 表示數字的有效長度(從數字的左邊第 1 位不為 0 的開始算起,直到最右邊的長度。取值範圍 0~38

redis 在Windows下的安裝及基本操作更新中~~~

有用 redis 安裝 abc nbsp com inux eas pan 安裝目錄 Redis 安裝 Window 下安裝 下載地址:https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。這個需

《深入理解Java虛擬機:JVM高級屬性與最佳實踐》讀書筆記更新

pen 內存區域 深度 span 進化 ria 最短 描述 core 第一章:走進Java 概述 Java技術體系 Java發展史 Java虛擬機發展史 1996年 JDK1.0,出現Sun Classic VM HotSpot VM, 它是 Sun JDK 和 Open

初級程序員學習網站更新ing

ins lob 初級 ast ebo intellij sna vim使用 dir go語言學習: goexample快速學習:https://gobyexample.com/ 《Go入門指南》中文教程:https://github.com/Unknwon/the-way-

python總結更新

註意 整數 元素 生成 更新 ron 外部 也會 mmu 1 python函數中的參數傳遞(註意可變和不可變傳遞) 可更改(mutable)與不可更改(immutable)對象 在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而

linux常用命令匯總更新中...

文本查看 ... lan 指定 編輯命令 顯示 查看文件內容 屏幕 一個 文本查看與編輯 1、文本編輯命令 vi/vim 2、查看文件內容命令 命令 說明 命令格式 參數 cat 將一個文件的內容連續輸出在屏幕上 cat [-option] 文件名 -n:將行號

SQL:查找被鎖的表,以及鎖表的SQL語句重點推薦

內存 結果 dea 但我 使用 相同 以及 serve 釋放 --死鎖檢測 use master Select * from sysprocesses where blocked<>0 --找到SPID exec sp_lock --根據SPI

Office 中的各種小tips更新

pan lan tex 編號 裁剪 com 文獻 ffice text 1、Word 中打字輸入會擦掉之後原有字符,出現“吃字”的情況? 要將“改寫”切換為“插入”,最簡單的方法就是點擊鍵盤上小鍵