MySql-存储过程(理解为预处理多返回值函数)
来源:互联网 发布:淘宝助理5老版本下载 编辑:程序博客网 时间:2024/05/22 02:23
- 1.语法结构:create [definer = {user | current_user}]
procedure sp_name ([proc_parameter[,...]]) [characteristic...] routine_body
proc_parameter: [in | out | inout] param_name type
in:该参数的值必须在调用存储过程时指定
out:该参数的值可以被存储过程改变,并且可以返回
inout:表示该参数在调用时指定,并且可以被改变和返回给调用者
过程体:由合法的sql语句构成,对于记录的增删改查及多表连接的sql语句,过程体如果超过两个语句,必须使用begin...end,复合语句内可以声明变量,循环,控制语句。
2. 创建不带参数的存储过程:create procedure sp1() select version(); //创建一个名为sp1的存储过程 功能是返回版本
3. 带有in类型参数的存储过程:create procedure removeUserById(in myId int unsigned)
-> begin
-> delete from users where id = myId;//标准语句 参数赋值 参数名字不能和字段名相同
-> end
-> //
4. 调用存储过程:call sp_name([parameter[,...]])//若存储过程有参数,则()不能省略
call sp_name[()]
示例:call sp1; call sp1();
call removeUserById(3);
5. 修改存储过程:alter procedure sp_name [characteristic...] comment ‘string’
| {contains sql | no sql | reads sql data | modifies sql data}
| sql security {definer | invoker}
6. 删除存储过程:drop procedure [if exists] sp_name
示例:drop procedure removeUserById;
7.带有in和out类型参数的存储过程:
create procedure removeUserAndReturnUserNums(in p_id int unsigned,out userNums int unsigned)
-> begin
-> delete from test where id = p_id;
-> select count(id) from test into userNums;//userNums代表接收表test的id总数
-> end
-> //
调用:call removeUserAndReturnUserNums(2,@nums); //@nums代表变量
查看:select @nums;
8.带有多个out类型参数的存储过程
create procedure removeUserByAgeAndReturnInfos(in p_age smallint unsigned,out deleteUsers smallint unsigned,out userCountssmallint unsigned)
-> begin
-> delete from users where age=p_age; 根据p_age参数删除表的记录
-> select row_count() into deleteUsers; 返回改变字段的数量并赋给deleteUsers
-> select count(id) from users into userCounts; 返回id数量并赋给userCounts
-> end
-> //
in即为输入的变量 out是输出的变量
row_count():返回改变的字段的数量
调用: call removeUserByAgeAndReturnInfos(20,@a,@b);
调用,删除age为20的所有记录,并返回改变字段的总数给a,返回剩余id数量给b。
- MySql-存储过程(理解为预处理多返回值函数)
- MySQL C API预处理函数call存储过程
- mysql存储过程 预处理变量
- mysql 创建存储过程 返回单个值 调用存储过程
- 关于 mysql 存储过程 传递表名作为参数,以及从存储过程返回值的方法
- mysql 存储过程理解
- 理解MYSQL存储过程
- 解决Java连接MySQL存储过程返回参数值为乱码问题
- mysql存储过程预处理(动态sql)
- MySQL——索引 视图 存储过程 触发器 游标 表复制 内置函数 预处理
- mysql 函数 + 存储过程
- mysql函数+存储过程
- MySQL存储过程、函数
- MySQL存储过程、函数
- mysql存储过程,函数
- Oracle-存储过程-参数为数组-返回值为集合,java-调用存储过程
- mysql存储过程存储函数
- 存储过程返回值
- 读杂书的总结
- 安卓学习笔记基础篇之环境配置
- Java学习归纳复习(2)
- js全选函数实现
- Spring工作原理及其作用
- MySql-存储过程(理解为预处理多返回值函数)
- 给大家推荐一个python的学习网站 http://www.codecademy.com
- 链表(C++实现)
- 浅析glibc中thread tls的一处bug
- javaweb通知客户端下载方式
- perf 性能分析实例——使用perf优化cache利用率
- OC中ARC forbids explicit message send of release错误
- 简单约瑟夫环【队列实现】
- 2014.10.07