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

2021-10-18 18:38:07 字數 2213 閱讀 1334

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...