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.游標的組成 游標包含兩個部分 乙個是游標結果集 乙個是游標位置。...