存储过程 mysql 例子_mysql 存储过程的简单例子

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 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值