mysql存储过程之游标使用
2012-12-12 11:27
561 查看
摘要:本文主要讲解了存储过程的创建、调用、以及游标的使用 ,相信掌握了游标 会对你有不错的帮助,有不足之处还请指教
导航 : 一、存储过程的创建及调用
二 、游标的使用
三、 示例
四、补充
说明:
1、用到的两个数据表:
from_data
to_data
2、示例需求
: 将表from_data 的select结果集循环插入到表 to_data;
伪代码: while 循环 select id ,name from_data
insert into to_data(id,name) value(from_data.id,from_data.name)
end
3、环境:
mysql
一、存储过程的创建及调用
我们创建一个名叫 add_test的存储过程
1 、检查是否有 add_test
Sql代码
drop procedure if exists add_test;
2、创建
Sql代码
create procedure add_test()
(
#[in|out|inout] 参数 datatype
a int;
b int;
)
begin
#SQL 语句;
end;
3、调用
Sql代码
call add_test(1,2
);
以上就是基本的创建方法,注意已下几点:
1 、在建立和调用时,add_test后面的“()”是必须的
2、MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”,并且参数不能指定默认值 。
3、包含多条 SQL 语句时,需要 begin end 关键字,在begin end里面的每条语句的末尾,都要加上分号 “;”
4、在begin end里面声明变量,使用关键字 DECLARE ,如:
Sql代码
begin
#声明一个name变量,类型是varchar(记得分号)
name varchar(32);
end;
二 、游标的使用
1、定义游标
Sql代码
/*
定义游标的关键字:CURSOR。
定义游标cursor_name,
游标cursor_name当前指针的记录
是一个表from_data的多行结果集
*/
DECLARE cursor_name CURSOR FOR select id,name
from from_data;
2、打开游标
Sql代码
#关键字:OPEN
OPEN cursor_name;
3、 获取游标
Sql代码
#声明两个变量
DECLARE a int
;
DECLARE b varchar(32)
;
/*
FETCH 获取游标当前指针的记录,并传给指定变量 a 、b
*/
FETCH cursor_name INTO a,b;
注意:(1、此处很重要,我们在后面的循环例子中会详细讲解如何用,
(2、注意变量数必须与MySQL游标返回的字段数以及类型一致,请看2,3步的标红处,
a的类型对应 id,b类型对应name
4、关闭游标
Sql代码
CLOSE cursor_name ;
以上就是游标的常见使用方法,关键的部分我已在每一步中说明,就不在多说了,现在我们看下例子:
三、示例
Sql代码
drop procedure if exists add_test;
# 创建存储过程 add_test
CREATE PROCEDURE add_test()
BEGIN
#定义 变量
DECLARE a int;
DECLARE b VARCHAR(30);
#此变可有可无,为了给个该存储函数执行成功后给个提示,运行下便知道
DECLARE str VARCHAR(300);
DECLARE x int;
#这个用于处理游标到达最后一行的情况
DECLARE
导航 : 一、存储过程的创建及调用
二 、游标的使用
三、 示例
四、补充
说明:
1、用到的两个数据表:
from_data
to_data
2、示例需求
: 将表from_data 的select结果集循环插入到表 to_data;
伪代码: while 循环 select id ,name from_data
insert into to_data(id,name) value(from_data.id,from_data.name)
end
3、环境:
mysql
一、存储过程的创建及调用
我们创建一个名叫 add_test的存储过程
1 、检查是否有 add_test
Sql代码
drop procedure if exists add_test;
2、创建
Sql代码
create procedure add_test()
(
#[in|out|inout] 参数 datatype
a int;
b int;
)
begin
#SQL 语句;
end;
3、调用
Sql代码
call add_test(1,2
);
以上就是基本的创建方法,注意已下几点:
1 、在建立和调用时,add_test后面的“()”是必须的
2、MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”,并且参数不能指定默认值 。
3、包含多条 SQL 语句时,需要 begin end 关键字,在begin end里面的每条语句的末尾,都要加上分号 “;”
4、在begin end里面声明变量,使用关键字 DECLARE ,如:
Sql代码
begin
#声明一个name变量,类型是varchar(记得分号)
name varchar(32);
end;
二 、游标的使用
1、定义游标
Sql代码
/*
定义游标的关键字:CURSOR。
定义游标cursor_name,
游标cursor_name当前指针的记录
是一个表from_data的多行结果集
*/
DECLARE cursor_name CURSOR FOR select id,name
from from_data;
2、打开游标
Sql代码
#关键字:OPEN
OPEN cursor_name;
3、 获取游标
Sql代码
#声明两个变量
DECLARE a int
;
DECLARE b varchar(32)
;
/*
FETCH 获取游标当前指针的记录,并传给指定变量 a 、b
*/
FETCH cursor_name INTO a,b;
注意:(1、此处很重要,我们在后面的循环例子中会详细讲解如何用,
(2、注意变量数必须与MySQL游标返回的字段数以及类型一致,请看2,3步的标红处,
a的类型对应 id,b类型对应name
4、关闭游标
Sql代码
CLOSE cursor_name ;
以上就是游标的常见使用方法,关键的部分我已在每一步中说明,就不在多说了,现在我们看下例子:
三、示例
Sql代码
drop procedure if exists add_test;
# 创建存储过程 add_test
CREATE PROCEDURE add_test()
BEGIN
#定义 变量
DECLARE a int;
DECLARE b VARCHAR(30);
#此变可有可无,为了给个该存储函数执行成功后给个提示,运行下便知道
DECLARE str VARCHAR(300);
DECLARE x int;
#这个用于处理游标到达最后一行的情况
DECLARE
相关文章推荐
- MySql 存储过程使用游标循环插入数据示例
- mysql 存储过程使用游标实例
- mysql-游标及存储过程游标的使用--源自技术
- mysql 存储过程中游标的使用
- mysql 存储过程游标的使用及存储过程调用存储过程
- MySQL中关于行转列的存储过程的写法(使用游标)
- MySQL中关于行转列的存储过程的写法(使用游标)
- MySQL 存储过程中的游标使用
- mysql 存储过程中使用多游标
- MySQL 存储过程中使用游标
- Mysql存储过程优化——使用临时表代替游标
- MySQL存储过程中使用游标和临时表
- MySql 自定义函数,存储过程,游标的使用
- MySql 存储过程游标使用示例
- mysql存储过程和游标使用实例
- mysql 存储过程中使用多游标
- mysql 存储过程中 limit之后使用分页变量,传入分页参数. 类似于微博游标分批次获取信息;问号参数类似于c#的string.format;问号占位符
- Oracle与MySQL存储过程以及游标使用的区别
- Mysql存储过程优化——使用临时表代替游标(转)
- MySql 存储过程使用游标循环插入数据示例