存储过程之多项结果集游标处理
来源:互联网 发布:女士羽绒服品牌 知乎 编辑:程序博客网 时间:2024/05/16 08:12
mysql 存储过程 ,游标
(2012-06-27 14:15:30)宋体
存储过程
游标
结果集
变量
杂谈
分类:js以下的文章主要介绍的是MySQL游标的使用笔记,其可以用在存储过程的SQL语句,其主要类型主要有以下几种,以下就是对其详细介绍,相信如果你掌握了这项技术,会在以后的学习或是工作中带来很大的帮助。
1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等
2、 select语句返回单行变量并可传给本地变量(select ..into)
3、 返回多行结果集的select语句,并可使用MySQL游标循环处理
注意,存储过程返回的多行结果集,可以被客户端程序(如php)所接收,但要在一个存储过程中接收另一个存储过程的结果集是不可能的,一般解决办法是存入临时表供其它过程共用
4、 prepare语句
以下主要讲述游标及prepare部分
游标
定义
- DECLARE
cursor_name CURSOR FOR SELECT_statement;
游标操作
OPEN 打开游标
- OPEN
cursor_name;
FETCH获取游标当前指针的记录,并传给指定变量列表,注意变量数必须与MySQL游标返回的字段数一致,要获得多行数据,使用循环语句去执行FETCH
- FETCH
cursor_name INTO variable list;
CLOSE关闭游标
- CLOSE
cursor_name ;
注意:MySQL的游标是向前只读的,也就是说,你只能顺序地从开始往后读取结果集,不能从后往前,也不能直接跳到中间的记录.
一个完整的例子:
定义本地变量
- DECLARE
o varchar(128);
定义游标
- DECLARE
ordernumbers CURSOR - FOR
- SELECT
callee_name acct_timeduration=10800;FROM account_tbl where - DECLARE
CONTINUE no_more_departments=1;HANDLER FOR NOT FOUND SET - SET
no_more_departments=0;
打开游标
- OPEN
ordernumbers;
循环所有的行
- REPEAT
- --
Get order number - FETCH
ordernumbers INTO o; - update
account allMoneyallMoney=allMoney+72,lastMonthConsumelastMonthConsume=lastMonthConsume-72set where NumTg=@o;
循环结束
- UNTIL
no_more_departments - END
REPEAT;
关闭游标
- CLOSE
ordernumbers;
以上的相关内容就是对MySQL游标使用笔记的介绍,望你能有所收获。
变量定义:
declare variable_name [,variable_name...] datatype [defaultvalue];
其中,datatype为mysql的数据类型,如:int, float, date, varchar(length)
例:
declare l_int int unsigned default 4000000; declare l_numericnumeric(8,2) default 9.95; declare l_date date default'1999-12-31'; declare l_datetime datetime default '1999-12-3123:59:59'; declare l_varchar varchar(255) default 'this will not bepadded';
变量赋值
set 变量名 = 表达式值 [,variable_name = expression ...]
参数
mysql存储过程的参数用在存储过程的定义,共有三种参数类型,in,out,inout
create procedure|function([[in |out |inout ] 参数名 数据类形...])
in 输入参数
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
out 输出参数
该值可在存储过程内部被改变,并可返回
inout 输入输出参数
调用时指定,并且可被改变和返回
建存储过程:
语法:
create procedure p()
begin
end
create procedure productpricing()
begin
end;
# begin…end之间是存储过程的主体定义
# mysql的分界符是分号(;)
调用存储过程的方法是:
# call加上过程名以及一个括号
# 例如调用上面定义的存储过程
call productpricing();
- 存储过程之多项结果集游标处理
- 一个游标处理有两个结果集的存储过程
- 一个存储过程 游标循环结果集
- 存储过程之游标
- 存储过程之游标
- 执行Oracle存储过程返回游标结果集
- 通过游标读取oracle存储过程返回的结果集
- 存储过程使用游标变量返回结果集
- 存储过程使用游标变量返回结果集(推荐)
- mysql 存储过程中利用游标循环结果集
- sql server 存储过程 获取slect 结果集 游标
- SSM-Mybatis调用Oracle存储过程返回结果集(游标)
- ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理
- mysql存储过程 游标 查询结果循环
- mysql存储过程 游标 查询结果循环
- 存储过程 多条结果集处理
- MySQL 存储过程之游标
- oracle存储过程之游标
- 为Android安装BusyBox —— 完整的bash shell
- 如何在自己的工程中调用自己写的.lib文件
- 问题记录
- js 中的运算符
- keil下代码的定位2
- 存储过程之多项结果集游标处理
- 【vim】movement by line
- 常见SQLException异常收藏
- mysql存储过程之游标使用
- Html 翻页显示表头
- 关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
- JavaScript正则表达式基础知识汇总
- SQLServer中文处理(一)
- Android圆角ListView并完美解决和ScrollView共存问题