轉自:http://www.cnblogs.com/sk-net/archive/2011/09/07/2170224.htmlphp
如下的文章主要介紹的是MySQL遊標的使用筆記,其能夠用在存儲過程的SQL語句,其主要類型主要有如下幾種,如下就是對其詳細介紹,相信若是你掌握了這項技術,會在之後的學習或是工做中帶來很大的幫助。html
一、 無返回結果語句,如:INSERT,UPDATE,DROP, DELETE等oop
二、 select語句返回單行變量並可傳給本地變量(select ..into)學習
三、 返回多行結果集的select語句,並可以使用MySQL遊標循環處理spa
注意,存儲過程返回的多行結果集,能夠被客戶端程序(如php)所接收,但要在一個存儲過程當中接收另外一個存儲過程的結果集是不可能的,通常解決辦法是存入臨時表供其它過程共用指針
四、 prepare語句xml
如下主要講述遊標及prepare部分htm
遊標blog
定義get
遊標操做
OPEN 打開遊標
FETCH 獲取遊標當前指針的記錄,並傳給指定變量列表,注意變量數必須與MySQL遊標返回的字段數一致,要得到多行數據,使用循環語句去執行FETCH
CLOSE關閉遊標
注意:MySQL的遊標是向前只讀的,也就是說,你只能順序地從開始日後讀取結果集,不能從後往前,也不能直接跳到中間的記錄.
一個完整的例子:
定義本地變量
定義遊標
打開遊標
循環全部的行
循環結束
關閉遊標
DELIMITER $$USE `kubauser`$$DROP PROCEDURE IF EXISTS `cursortest`$$CREATE DEFINER=`coo8new`@`%` PROCEDURE `cursortest`(OUT a VARCHAR(50),OUT b VARCHAR(50)) BEGIN DECLARE _outuserid VARCHAR(50); DECLARE _kubauserid VARCHAR(50); DECLARE flag INT; DECLARE update_cursor CURSOR FOR SELECT outuserid,kubauserid FROM ecuser_cooperationuser; DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1; SET flag=0; OPEN update_cursor; REPEAT /*循環*/ FETCH update_cursor INTO _outuserid,_kubauserid; SET a=_outuserid; SET b=_kubauserid; /*update set where*/ UNTIL flag END REPEAT; CLOSE update_cursor ; END$$DELIMITER ;