mysql 游標及儲存過程游標的使用 源自技術

2021-07-11 01:10:06 字數 2142 閱讀 3900

乙個完整的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

這個語句關閉先前開啟的游標,注意,用完後必須關閉。

(四)示例,下面是乙個儲存過程,裡面用到游標,逐條更新資料(批量更新資料)

begin

declare 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...