mysql 儲存過程的簡單例子

2021-08-27 19:07:09 字數 2333 閱讀 9967

mysql 儲存過程的簡單例子

-- 定義新的語句分隔符//

delimiter //

create procedure pd016()

begin

-- ----------------------------------

-- 本儲存過程主要實現以下操作

-- 1.查詢遊戲表的資料

-- 2.根據遊戲表資料去獲取型別表的資訊

-- ----------------------------------

-- 建立乙個臨時表

create temporary table if not exists tmptable

( id int(11) not null auto_increment,

game_id int(11),

catalog_name varchar(100),

primary key(id)

) engine=memory;

-- 顯示臨時表資料

select * from tmptable;

begin

-- declare 必須緊跟著在begin之後定義

declare m_ga_id int;

declare m_game_name_cn varchar(100);

declare m_catalog_game_id int;

declare m_catalog_name varchar(100);

-- 定義游標結束標誌

declare m_stop_flag int default 0;

-- 定義需要使用的游標

declare cursor_game cursor for select ga_id,ga_name_cn from t021_game;

declare cursor_catalog cursor for select ca_game_id,ca_name from t025_catalog where ca_game_id=m_ga_id;

-- 如果用了游標cursor,則必須定義這個游標結束標誌,用來判讀游標是否到底

-- 如果有多個游標,那麼這些游標共用這個結束標誌

-- 在讀取游標所在記錄時,必須先判斷結束標誌

-- 如果多個游標是巢狀關係,那麼內層游標結束之後,必須將結束標誌恢復為0,否則會影響外層游標的使用

declare continue handler for not found set m_stop_flag=1;

-- 開啟前面定義的游標

open cursor_game;

-- 迴圈開始

-- 從游標當前位置取出1條記錄,執行後游標會自動會移動到下一條記錄

-- 將取出的字段賦給定義好的變數,注意游標欄位與變數的一一對應關係

repeat fetch cursor_game into m_ga_id,m_game_name_cn;

-- 判讀游標是否到底

if m_stop_flag=0 then

-- 開啟游標

open cursor_catalog;

-- 內層迴圈開始

repeat fetch cursor_catalog into m_catalog_game_id,m_catalog_name;

-- 判讀游標是否到底

if m_stop_flag=0 then

-- 將資料存入臨時表中

insert into tmptable(game_id,catalog_name) values(m_ga_id,m_catalog_name);

end if;

-- 游標結束標誌為1,表示游標到底,內層迴圈結束。

until m_stop_flag=1 end repeat;

-- 關閉游標

close cursor_catalog;

-- 設定游標結束標誌為0(0=未結束),這樣可以讓外層迴圈繼續執行。

set m_stop_flag=0;

end if;

-- 游標結束標誌為1,表示游標到底,迴圈結束。

until m_stop_flag=1 end repeat;

-- 關閉游標

close cursor_game;

end;

-- 顯示臨時表資料

select * from tmptable;

-- 結束前清除臨時表資料

truncate table tmptable;

end;

-- //表示建立儲存過程語句的結束

//-- 恢復語句分隔符為;

delimiter ;

mysql儲存過程簡單例子

1.之前經常在oracle資料庫中使用儲存過程,換到mysql後用的不多,但是有時候也用,大致記錄一下,基本和oracle的一樣。create definer root procedure newproc begin declare done int default false declare n ...

mysql簡單例子 mysql 儲存過程的簡單例子

mysql 儲存過程的簡單例子 定義新的語句分隔符 delimiter create procedure pd016 begin 本儲存過程主要實現以下操作 1.查詢遊戲表的資料 2.根據遊戲表資料去獲取型別表的資訊 建立乙個臨時表 create temporary table if not exi...

mysql 儲存過程 例子 MySQL儲存過程例子

索引 index create index idx sname on student sname 4 alter table teacher add index idx tname tname drop index idx sname on student 檢視 view create view v...