1. 程式人生 > 其它 >儲存過程,遊標。

儲存過程,遊標。

遊標例子:

轉存資料從tb_user的姓名,手機號 轉移到bf_user中去

-- 定義語法結束符號
delimiter //
-- 建立一個 名稱為 p2 的儲存過程
drop procedure if exists p2;
create procedure p2()
begin
    declare total int;
    -- 建立 用於接收遊標值的變數
    declare name_read , phone_read varchar(20) character set utf8;


    -- 遊標預設的標誌
    declare done int default 0;
    -- 宣告遊標
    declare cur cursor for select username, phone from tb_user;
    -- 指定遊標迴圈結束時的返回值
    declare continue handler for not found set done = 1;
    -- 開啟遊標
    open cur;

    -- 初始化 變數
    set total = 0;

    -- loop 迴圈
    xxx:
    loop
        -- 根據遊標當前指向的一條資料
        fetch cur into name_read, phone_read;
				-- 當 遊標的返回值為 1 時 退出 loop迴圈
        if done = 1 then
            leave xxx;
        end if;
				-- todo
        insert into bf_user values (name_read, phone_read);
	      -- 累計
        set total = total + 1;
    end loop;
    -- 關閉遊標
    close cur;
    -- 輸出 累計的結果
    select total;
end //
delimiter;

call p2();

執行之後