mysql沒有隱式和顯式游標之分,所用的游標都是顯式游標,也就是必須要進行定義游標變數,然後按照正規的流程使用,開啟、遍歷、關閉。以下是具體的使用方法。
游標定義
1. declare cursor_name cursor for select_statement;
游標操作
open 開啟游標
1. open cursor_name;
fetch 獲取游標當前指標的記錄,並傳給指定變數列表,注意變數數必須與mysql游標返回的字段數一致,要獲得多行資料,使用迴圈語句去執行fetch
1. fetch cursor_name into variable list;
close關閉游標
1. close cursor_name ;
注意:mysql的游標是向前唯讀的,也就是說,你只能順序地從開始往後讀取結果集,不能從後往前,也不能直接跳到中間的記錄.
乙個完整的例子:
定義本地變數
1. declare o varchar(128);
定義游標
1. declare ordernumbers cursor
2. for
3. select callee_name from account_tbl where acct_timeduration=10800;
4. declare continue handler for not found set no_more_departments=1;
5. set no_more_departments=0;
開啟游標
1. open ordernumbers;
迴圈所有的行
1. repeat
2. -- get order number
3. fetch ordernumbers into o;
4. update account set allmoneyallmoney=allmoney+72,lastmonthconsumelastmonthconsume=lastmonthconsume-72 where numtg=@o;
迴圈結束
1. until no_more_departments
2. end repeat;
關閉游標
1. close ordernumbers;
類似於動態游標的示例,作乙個動態視力,游標還是固定不變的
create definer=`root`@`localhost` procedure `p_procedurecode`()
begin
declare tblname varchar(20);
declare done int default 0;
declare b,c varchar(20);
declare bover boolean default false;
declare cur1 cursor for select ip from v_wondyfox;
declare continue handler for sqlstate '02000' set bover=true;
drop view if exists v_wondyfox ;
set tblname='`20120509`';
set @sql=concat("create view v_wondyfox as select ip from cmdb.", tblname);
prepare stmt1 from @sql;
execute stmt1 ;
deallocate prepare stmt1;
open cur1;
repeat
fetch cur1 into b;
insert into iptest select b;
until bover end repeat;
close cur1;
end
mysql 隱式轉換 談談MySQL隱式型別轉換
前言今天我們繼續回到mysql系列文章中,談一談mysql中隱式型別轉換。其實我最早知道是在慢sql優化中知道隱式型別轉換概念的 在說隱式型別轉換之前,首先我們通過乙個例項來看看是怎麼回事。資料結構 本文中所有的操作,都是基於該資料結構 有興趣的童鞋,可以實驗 create table t base...
mysql 關閉隱式轉換 Mysql中的隱式轉換
在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引,下面分析兩種隱式轉換的情況看表結構phone為int型別,name為varchar型別 兩種情況都可以用到索引,這次等號右側是 2 注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但因為...
mysql日期隱式轉換 mysql中的隱式轉換
什麼隱式型別轉換?在mysql中 當操作符與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。則會發生轉換隱式 也就是說,mysql會根據需要自動將數字轉換為字串,將字串轉換數字。看到這個概念之後,是不是有一種茅塞頓開的感覺。哦.原來在資料結構中telephone欄位為字串 varchar ...