在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.
特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高.
第一段:MySQL 创建存储过程
"pr_add" 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 "a"、"b",返回这两个参数的和.
drop?procedure?if?exists?pr_add;?
计算两个数之和
create?procedure?pr_add? ?
(? ?
a?int,? ?
b?int? ?
)? ?
begin? ?
declare?c?int;? ?
if?a?is?null?then? ?
set?a?=?0;? ?
end?if;? ?
if?b?is?null?then? ?
set?b?=?0;? ?
set?c?=?a?◆?b;? ?
select?c?as?sum;? ?
/*? ?
return?c;?
不能在 MySQL 存储过程中使用.return 只能出现在函数中.
*/? ?
end;?
第二段:调用 MySQL 存储过程
执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量.
set?@a?=?10;? ?
call?pr_add(@a,?@b);?
第三段:MySQL 存储过程特点
创建 MySQL 存储过程的简单语法为:
create?procedure?存储过程名字()? ?
[in|out|inout]?参数?datatype? ?
MySQL?语句;? ?
MySQL 存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in".习惯上,对于是"in" 的参数,我们都不会显式指定.
① MySQL 存储过程名字后面的"()"是必须的,即使没有一个参数,也需要"()"
)?
这是个? ?
多行?MySQL?注释.? ?
if?a?is?null?then?#?这也是个单行?MySQL?注释? ?
call?pr_no_param();?
①.0. 因为 MySQL 存储过程参数没有默认值,所以在调用 MySQL 存储过程时候,不能省略参数.可以用 null 来替代
以上就是土嘎嘎小编为大家整理的Mysql 存储过程相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!