MySQL 存储过程
MySQL 5.0 版本开始支持存储过程。
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
优点
- 存储过程可封装,并隐藏复杂的商业逻辑。
- 存储过程可以回传值,并可以接受参数。
- 存储过程无法使用 SELECT指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
- 存储过程可以用在数据检验,强制实行商业逻辑等。
缺点
- 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。
- 当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
- 存储过程的性能调校与撰写,受限于各种数据库系统。
下面简单用navicat演示 更多详情点击
选择参数及模式
等同于
CREATE DEFINER=`root`@`%` PROCEDURE `test`(IN `pid` int,IN `lid` int)
创建后的结构(select为自己书写逻辑程序)
点击运行填写参数
得到如些结果
也可通过下述方式调用
这时简单的存储过程已完成下面通过php调用(已YII为例)
下面是一个输入输出参数的damo
CALL `测试返回结果`(1,@s)
得到@s为输出结果
以下为YII的写法
$sql = 'CALL `测试返回结果`(1,@s)';
\Yii::$app->db->createCommand($sql) ->queryAll();
$data = \Yii::$app->db->createCommand('select @s') ->queryOne();
return $data;
返回结果
更多参考文章: