資料庫筆記五 游標

2021-06-08 02:34:53 字數 4074 閱讀 5384

游標是從一種從表中檢索並進行操作的工具

一、游標的使用:

1、宣告:

語法 

decalare cursor_name [insertitive][scroll] cursor

for select_statement

for]

示例:建立乙個名為「mycursor」的標準游標

use 銷售管理系統

declare mycursor cursor for

select * from 操作員資訊表

go

建立唯讀游標

use 銷售管理系統

declare mycursor_01 cursor for

select *from 操作員資訊表

for read only —— 唯讀游標

go

2、開啟

語法:

open |cursor_variable_name

global指定為全域性游標

示例:

use 銷售管理系統

declare mycursor_001 cursor for —— 宣告游標

select 操作員編號,操作員姓名,操作員年齡 from 操作員資訊表

where 操作員標號='cy2004'

open mycursor_001 ——開啟游標

go

3、從游標中讀取資料

語法:

fetch

[[next|prior|first|las|absolute|relative]

from

]|@cursorr_variable_name}

[into @variable_name[,...n]]

@@fetch_status:返回上次執行fetch命令的狀態。返回值為0,fetch語句成功;為-1,fetch語句失敗或此行不在結果中;為-2,被提取的行不存在

示例:

use 銷售管理系統

declare readcursor cursor for

select 操作員編號,操作員姓名,操作員性別,操作員住址

from 操作員資訊表

open readcursor

fetch next from readcursor ——執行取數操作

while @@fetch_status=0 ——檢查,確定是否可以繼續

begin

fetch next from from readcursor

end

4、關閉

語法:close |cursor_variable_name}
示例:

use 銷售管理系統

declare closecursor cursor for

select *from 銷售表

for read only

open closecursor ——開啟游標

close closecursor ——關閉游標

5、釋放

語法:deallocate |@cursor_variable_name}
示例:

use 銷售管理系統

declare freecursor cursor for

select * from 銷售表

open freecursor

close freecursor

deallocate freecursor

二、游標的相關操作

1、刪除資料

delete table_name

set column_name

where current of cursor_name

示例:

use 銷售管理系統

declare deletecursor cursor

for select *from 操作員資訊表

where 操作員編號=『cy2006』

open deletecursor

gofetch next from deletecursor

delete 操作員資訊奧

where current of deletecursor ——刪除指定條件的資料

fetch next from deletecursor

goclose deletecursor

deallocate deletecursor

go

2、修改資料

示例:

declare @id char(20)

declare @ids char(20)

declare @name char(20)

set @id='cy2006'

declare authors_cursor cursor

for select 操作員編號,造作員姓名 from 操作員資訊表

open anthors_cursor

fetch next from authors_cursor

into @ids,@names

while @@fetch_status=0

begin

if @id=@ids

begin

update 操作員資訊表 set 操作員年齡=30 where 操作員編號=@ids

endfetch next from anthors_cursor

into @ids,@names

endclose anthors_cursor

deallocate anthors_cursor

3、排序

示例:

use 銷售管理系統

declare mycursor cursor

for select 商品編號,商品名稱,庫存數量,庫存金額

from 庫存表

order by 庫存數量 desc

open mycursor

fetch next from mycursor

while @@fetch_status=0

fetch next form mycursor

close mucursor

deallocate mycursor

4、包含計算

示例:

declare cur cursor

for select 商品編號,商品名稱,數量,金額,數量*金額 as 銷售總額

from 銷售表

open cur 庫

fetch next from cur

while @@fetch_status=0

begin

fetch next from cur

end

close cur

deallocate cur

三、游標鎖定

use pubs

set transaction isolation leval repeatable read ——設定隔離級別為可重複

gobegin transaction

select * from authors

go

四、儲存過程

sp_cursor_list  :報告當前為連線開啟的伺服器游標的特性

sp_describle_cursor:報告伺服器游標的特性

sp_describe_cursor_lolumn:報告伺服器游標結果集中的特性

sp_describe_cursor_table:報告伺服器游標所引用的基表

資料庫總結五游標

create table users id int primary keynot null,name varchar 50 null insert into users values 1,dabing insert into users values 2,sunrongguan 游標例項 creat...

資料庫游標

資料庫之 游標 轉貼 在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.游標和游標的優點 在資料庫中,游標...

資料庫游標

資料庫游標 2007 10 10 15 40 游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t sql 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...