游標是從一種從表中檢索並進行操作的工具
一、游標的使用:
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 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...