mysql 存储过程的简单例子

标签: mysql 存储过程 | 发表时间:2014-07-27 09:25 | 作者:stephen830
出处:http://www.iteye.com

 

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 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [mysql 存储过程] 推荐:

mysql存储过程 游标

- - ITeye博客
end if; insert into table3 (name) select name from table2 where id =i; end loop cursor_loop; CLOSE c1; end $ delimiter ;. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

mysql 存储过程的简单例子

- - 数据库 - ITeye博客
mysql 存储过程的简单例子. -- 定义新的语句分隔符// delimiter // create procedure pd016() begin. -- 本存储过程主要实现以下操作. -- 2.根据游戏表数据去获取类型表的信息. -- declare 必须紧跟着在begin之后定义. -- 如果用了游标cursor,则必须定义这个游标结束标志,用来判读游标是否到底.

MySQL存储过程-->通过游标遍历和异常处理迁移数据到历史表

- - CSDN博客数据库推荐文章
--  大表数据迁移 , 每天凌晨 1 点到 5 点执行 ,执行间隔时间10分钟, 迁移旧数据到历史表.    DECLARE EXIT HANDLER FOR SQLSTATE '02000'  /**包含游标not found*/.          SELECT1, 'oal_xxx','pro_oal_log_move',CONCAT('primary key:',p_oalid,' 游标执行正常结束.

oracle 存储过程 基础

- - ITeye博客
差不多一年没写过存储过程,最近要写,发现基本忘了,google一番之后,觉得很有必要把基础的东西写下来备忘. decalre -- 变量声明 var1 number(2);. -- 仅声明 var2 char(2) := '11';. -- 在声明的同时初始化 begin. -- 语句 end; -- 语句块结束.

SQL 存储过程之游标

- - CSDN博客推荐文章
使用游标循环 SQL 查询结果: . --- 声明变量 DECLARE @bid nvarchar(30); DECLARE @address nvarchar(50); --- 定义游标 DECLARE cur CURSOR for. select bid,[Address] from building; --- 打开游标 OPEN cur.

oracle中的存储过程使用

- - CSDN博客推荐文章
一存储过程的基本应用  . 1 创建存储过程(SQL窗口). 存储过程适合做更新操作,特别是大量数据的更新. 2 查看存储过程在数据字典中的信息(SQL窗口). 3 查看存储过程语句(SQL窗口). 4 执行存储过程(Command窗口). 使用SQL接口更新数据库,如果更新复杂而频繁,则需要频繁得连接数据库.

SQL Server 存储过程小结

- - CSDN博客数据库推荐文章
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用. 当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.     存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.

ORACLE 包内的存储过程的动态sql

- - CSDN博客数据库推荐文章
  function hello_function(p_param3 varchar2) --参数与包头中必须保持一致.         execute immediate 'insert into logtable1 values (:1,:2,:3,:4)' using '1','1','2','3'; --只能动态插入.

hibernate调用返回游标的存储过程

- - Oracle - 数据库 - ITeye博客
注:原创作品,转载请注明出处.     上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程.     此此扁博文的存储过程的功能相当于是jdbc调用select 的作用. 1,创建oracle中的包,并在该包中创建的游标类型. ---创建oracle的程序包,在该包中创建一个游标类型 --该类型在存储过程中用来生命输出参数的类型 create or replace package pkg_return_list as type list_cursor is ref cursor; end pkg_return_list;.

oracle 存储过程执行状态查询

- - Oracle - 数据库 - ITeye博客
从网上搜集了些资料,查看那些oracle procedure 正在执行,记录下以便日后使用:. 1、如何查看ORACLE中正在运行的存储过程. 使用 oracle 审核,记录和查看过程的执行. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.