存储过程
首页->学习资料->微服务治理->sql教程 关键词: 发布时间:2015-01-04 07:59:43 浏览次数:1338

存储过程,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 存储过程名


赞:(0)
踩:(0)
相关文章
find_in_set在集合中查找
sql查询自定义排序field函数
sql显示表结构及索引
sql修改表
添加、删除索引
sql分组
sql子查询
sql多表更新
sql建表同时插入数据
sql多表删除
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
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
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:946734
粤ICP备18028092号-1  微信:hurong241