MySQL學習:
MySQL遊標
1.什麼是遊標?
遊標(cursor)是一個存儲在MySQL服務器上的數據庫查詢,它並不是一條SELECT語句,而是被該語句檢索出來的結果集。
使用遊標也可以輕易的取出在檢索出來的行中前進或後退一行或多行的結果,也可以遍歷返回的多行結果。
2.遊標的使用
- 定義遊標
CREATE PROCEDURE 函數名()
BEGIN
DECLARE 遊標名 CURSOR
FOR
SELECT語句;
END;
- 打開和關閉遊標
OPEN 遊標名; --打開
CLOSE 遊標名;--關閉
- 例子
fetch是獲取遊標當前指向的數據行,並將指針指向下一行,當遊標已經指向最後一行時繼續執行會造成遊標溢出。
用 REPEAT 來循環的時候,也用 UNTIL done END REPEAT 語句來結束循環。
CREATE PROCEDURE func ()
BEGIN
-- 創建接收遊標數據的變量
DECLARE o INT;
DECLARE n VARCHAR ( 20 );
-- 創建結束標值變量
DECLARE done INT DEFAULT FALSE;
-- 指定遊標循環結束時的返回值
DECLARE CONTINUE HANDLER FOR NOT found SET done = TRUE;
-- 創建遊標
DECLARE ordernumbers CURSOR
FOR
SELECT math FROM students;
-- 打開遊標
OPEN ordernumbers;
-- 循環開始
REPEAT
FETCH ordernumbers INTO o;
...
UNTIL done END REPEAT;-- 循環結束
-- 關閉遊標
CLOSE ordernumbers;
END;
CALL func ();
若有不當之處,歡迎指正!