游標的使用筆記

2021-09-22 21:12:44 字數 3241 閱讀 9584

use sample_db;

create table fruits(

f_id int identity(1,1) primary key,--水果id

s_id int not null,        --**商id

f_name varchar(255) not null,--水果名稱

f_price decimal(8,2) not null --水果**

);use sample_db;

godeclare cursor_fruit cursor for

select  f_name,f_price from fruits;

open cursor_fruit;

--【例】使用名稱為cursor_fruit的游標,檢索fruits表中的記錄,輸入如下:

use sample_db;

gofetch next  from cursor_fruit 

while  @@fetch_status=0

begin

fetch next  from cursor_fruit

end;

close cursor_fruit

deallocate cursor_fruit;

--宣告名稱為@varcursor的游標變數

declare @varcursor cursor  --宣告游標變數

declare cursor_fruit cursor for    --建立游標

select  f_name,f_price from fruits;

open cursor_fruit  --開啟游標

set  @varcursor=cursor_fruit  --為游標變數賦值

fetch next from @varcursor   --從游標變數中讀取值

while @@fetch_status=0   --判斷fetch語句是否執行成功

begin

fetch next from @varcursor   --讀取游標變數中的資料

endclose @varcursor    --關閉游標

deallocate @varcursor;    --釋放游標 

--建立游標cursor_variable,將fruits表中的記錄f_name,f_price值賦給變數@fruitname和@fruitprice,並列印輸出。

declare @fruitname varchar(50),@fruitprice decimal(8,2)

declare cursor_variable cursor for

select f_name,f_price from fruits

where s_id=101;

open cursor_variable

fetch next from cursor_variable

into @fruitname,@fruitprice

print '編號為101的**商提供的水果種類和**為:'

while @@fetch_status=0

begin 

print @fruitname+' '+str(@fruitprice,8,2)

fetch next from cursor_variable

into @fruitname,@fruitprice

endclose cursor_variable

deallocate cursor_variable;

--宣告名稱為cursor_order的游標,對fruits表中的記錄按照**字段降序排列,輸入語句如下:

declare cursor_order cursor for

select f_id,f_name,f_price from fruits

order by f_price desc

open cursor_order

fetch next from cursor_order

while @@fetch_status=0

fetch next from cursor_order

close cursor_order

deallocate cursor_order;

--【例】宣告整型變數@sid=101,然後宣告乙個對fruits表進行操作的游標,開啟該游標,

--使用fetch next方法來獲取游標中的每一行的資料,

--如果獲取到的記錄的s_id的字段值與@sid值相同,將s_id=@sid的記錄中的f_price修改為12.2,最後關閉釋放游標,輸入如下:

declare @sid int,@id int =101

declare cursor_fruit cursor for

select s_id from fruits;

open cursor_fruit

fetch next from cursor_fruit into @sid

while @@fetch_status=0

begin

if @sid=@id

begin 

update fruits set f_price=11.1 where s_id=@id

endfetch next from cursor_fruit into @sid

endclose cursor_fruit

deallocate cursor_fruit;

select * from fruits where s_id=101;

--【例】使用游標刪除fruits表中s_id=102的記錄,如下

declare @sid1 int,@id1 int=102

declare cursor_delete cursor for

select s_id from fruits;

open cursor_delete

fetch next from cursor_delete into @sid1

while @@fetch_status=0

begin

if @sid1=@id1

begin 

delete from fruits where s_id=@id1

endfetch next from cursor_delete into @sid1

endclose cursor_delete

deallocate cursor_delete;

select * from fruits where s_id=102;

動態游標使用筆記

start 動態游標宣告 type my type cursor is ref cursor cur sql my type cursor str sql cursor varchar2 4000 陣列宣告 用於存放游標中的rowid欄位 type my type table rowid is ta...

游標的使用

declare sql varchar 8000 password varchar 200 密碼 tbname varchar 500 資料庫.dbo.表名,如果不指定 dbo.表名,則匯出資料庫的所有使用者表 filename varchar 1000 匯入 匯出路徑 檔名,如果 tbname引數...

游標的使用

游標 cursor 是處理資料的一種方法,為了檢視或者處理結果集中的資料,游標提供了在結果集中一次以行或者多行前進或向後瀏覽資料的能力。我們可以把游標當作乙個指標,它可以指定結果中的任何位置,然後允許使用者對指定位置的資料進行處理。1.游標的組成 游標包含兩個部分 乙個是游標結果集 乙個是游標位置。...