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定時任務簡單例子
如果要每30秒執行以下語句 update userinfo set endtime now where id 110 可以給mysql建個定時任務,具體方法如下 delimiter 設定語句終結符為 因儲存過程語句用 結束 一 檢視event是否開啟 show variables like sche...
mysql分割槽表簡單例子
mysql分表可以有三種辦法實現 1.直接物理表實現分割槽 主要由程式控制 2.通過merge儲存引擎 3.通過分割槽字段進行分割槽 當然也可以通過上面3種方式進行自由組合 下面的例子說的是第三種 分割槽表 a 建立分割槽表 create table test log id bigint 20 no...