DELIMITER $$
USE `student`$$
DROP PROCEDURE IF EXISTS `sync_student`$$
CREATE DEFINER=`student`@`%` PROCEDURE `sync_student`(para_name varchar) ----記住varchar類型的參數一定要設置長度,修改為varchar(50),就OK了
BEGIN
-- 定義變量
DECLARE id INT;
DECLARE name varchar;
DECLARE course INT;
DECLARE done INT DEFAULT 0;
-- 定義一個游標
DECLARE curCursor CURSOR FOR
SELECT
d.name AS name,
d.course as course
FROM
student d
WHERE 1 = 1
AND d.name = para_name ;
-- 如果游標指向沒有記錄,則定義done=1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
-- 開始事務
START TRANSACTION;
-- 打開游標
OPEN curCursor;
-- 循環開始
stock_loop:LOOP
-- 獲取游標的值,賦值給變量
FETCH curCursor INTO name;
-- 如果游標已經執行完,則跳出stock_loop 循環
IF done=1 THEN
COMMIT;
LEAVE stock_loop;
END IF;
......
-- 循環結束
END LOOP stock_loop;
-- 關閉當前游標
CLOSE curCursor;
-- 事務提交
COMMIT;
END$$
DELIMITER ;