mysql隱式游標 MYSQL 游標 動態游標示例

2021-10-17 17:02:37 字數 1970 閱讀 1336

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