乙個完整的mysql游標使用例子:定義本地變數
declare o varchar(128);
定義游標
declare ordernumbers cursor
for
select callee_name from account_tbl where
acct_timeduration
=10800
; declare continue handler for not found set
no_more_departments=1
; set
no_more_departments=0
; 開啟游標
open ordernumbers;
迴圈所有的行
repeat
-- get order number
fetch ordernumbers into o;
update account set
allmoney
allmoney
=allmoney+72,
lastmonthconsume
lastmonthconsume
=lastmonthconsume-72 where
numtg
=@o;
迴圈結束
until no_more_departments
end repeat;
關閉游標
close ordernumbers;
現在簡單總結一下游標的知識。
(一),認識游標(cursor)
就是乙個可讀的標識,用來標識資料取到什麼地方了。
(二),游標特性
1,唯讀
2,不滾動
3,不敏感的
(三),使用游標
需要強調的是,游標必須在定義處理程式之前被定義,但變數必須在定義游標之前被定義,順序就是變數定義-游標定義-處理程式。
1.定義游標
declare cursor_name cursor for select_statement
這個語句宣告乙個游標。也可以在子程式中定義多個游標,乙個塊中的每乙個游標必須命名唯一。宣告游標後也是單條操作的。
2. 游標open
open cursor_name
這個語句開啟先前宣告的游標。
3. 游標fetch
fetch cursor_name into var_name [, var_name] ...
這個語句用指定的開啟游標讀取下一行(如果有下一行的話),並且前進游標指標至該行。
4. 游標close
close cursor_name
這個語句關閉先前開啟的游標,注意,用完後必須關閉。
(四)示例,下面是乙個儲存過程,裡面用到游標,逐條更新資料(批量更新資料)
begindeclare no_more_record int default 0;
declare pid bigint(20);
declare pvalue decimal(15,5);
declare cur_record cursor for select cola, colb from tableabc; /*首先這裡對游標進行定義*/
declare continue handler for not found set no_more_record = 1; /*這個是個條件處理,針對not found的條件,當沒有記錄時賦值為1*/
open cur_record; /*接著使用open開啟游標*/
fetch cur_record into pid, pvalue; /*把第一行資料寫入變數中,游標也隨之指向了記錄的第一行*/
while no_more_record != 1 do
insert into testtable(id, value)
values (pid, pvalue);
fetch cur_record into pid, pvalue;
end while;
close cur_record; /*用完後記得用close把資源釋放掉*/
end
mysql 儲存過程 游標的使用
儲存過程 create procedure changefrozen begin 定義變數 declare i int default 0 declare d int default 0 declare y id int declare y uid int declare y task id int...
mysql儲存過程游標的運用,適合對游標剛學習者。
近來,因業務的需要寫了乙個儲存,放上面曬曬。適合對游標剛學習者,大致業務是實現對多張表審核操作需要插入審核訊息記錄 建立帶有三個輸入引數,乙個輸出引數的儲存 create procedure prop dealmessage in ids integer in status1 integer in ...
mysql儲存過程,對游標的操作
create procedure p delete test teacher in t id bigint,out res code int begin 定義游標結束標記 declare done int default 0 定義臨時儲存變數儲存遍歷右邊的id declare tmp id bigi...