存储过程,procedure
与函数类型,都是一个功能模块的代码!
相对于函数:函数倾向于某个功能点、而过程倾向于某个业务逻辑的整体实现!(如计算某员工工资,里面存储一系列的扣税扣费过程)
注意存储过程没有返回值,不能直接调用!需要使用 call 关键字调用存储过程:
语法
函数:create function
过程:createprocedure
创建存储过程
create procedure 过程名 (参数列表)
begin
过程体,执行代码的集合
end
过程的参数
功能类似函数的参数,也是在运行时传递数据。
但是,参数是分成三种类型:
输入,in
调用过程时,给过程传递数据,就是输入参数
输出,out
过程之后后,可以利用该参数,将数据传递出来!
输入输出,inout
同时完成输入和输出功能。既可以输入数据,也可以输出数据!
利用:in,out,inout来声明参数,最像php中引用传递!
过程与函数的区别:
函数有返回值,而过程没有
函数应该表达式内,而过程应该独立调用(不能出现在表达式内)!
参数上有区别,函数只有一类参数,只负责输入是参数数据!而过程,in,out,inout之分!
本质上,过程一整个业务逻辑。函数是一个特定功能点!
存储过程
先改定界符
delimiter //
创建存储过程
create procedure removeUserById(IN p_id INT UNSIGNED,OUT deleteNum INT UNSIGNED,OUT userCounts int unsigned)
begin
delete from users where id=p_id;(注意这里参数名如果也叫id的话会删除整个表的数据,貌似等价于delete from users where 1)
select row_count() into deleteNum;//删除的行数
select count(id) from users into userCounts;//还剩余多少条
end
//
调用:
call removeUserById(2,@a,@b);
select @a,@b(这两上变量只针对当前连接的用户有效)
删除存储过程
delete procedure 存储过程名
- 相关文章
- find_in_set在集合中查找
- sql查询自定义排序field函数
- sql显示表结构及索引
- sql修改表
- 添加、删除索引
- sql分组
- sql子查询
- sql多表更新
- sql建表同时插入数据
- sql多表删除
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1303109