一、创建存储过程
使用MySql Workbench创建存储过程,一定要记得使用delimiter指明结束符,否则会报错:Statement is incomplete, expecting: ';’
错误示例:
create procedure area_pro1(in mylevel tinyint)
begin
select * from area_code_2022 where level= mylevel ;
end;
正确示例:
delimiter //
create procedure area_pro1(in mylevel tinyint)
begin
select * from area_code_2022 where level= mylevel ;
end
//
其中,//就是结束符,可以自行指定,比如一般都用$$。
二、存储过程语法
这里就不照搬官方的语法了,按照我的理解来说一说:
create procedure 存储过程名(in/out/inout 参数名 参数类型)
begin
存储过程体,也就是你想执行什么逻辑 ;
end
其中,in表示输入参数,out表示输出参数,inout既可以是输入,也可以是输出。
三、存储过程的使用
1、使用仅有输入参数的存储过程,使用:call 存储过程名(值)即可。
注意:如果存储过程不传参数或者传错参数类型的话,该存储过程会报错。该参数是否可以不必传,暂时还不能确定,如你确定的话,欢迎评论区留言。
2、使用输出参数的存储过程
delimiter //
create procedure area_pro2(out myResult varchar(20000))
begin
select name into myResult from area_code_2022 where level=1 ;
end
//
使用into,将传出内容赋值给参数。
调用,注意带有@符号
3、inout 就是既可以当入参用,也可以当出参用,这里就不过多说了,
四、一般不建议使用存储过程
1、优势
1.一次编译,多次运行,性能好,节省每次运行编译时间
2.防止sql注入式攻击
3.隐藏数据库的复杂性,将数组组装的过程封装
2、劣势
1.存储过程难以调试
2.可移植性差,当碰到切换数据种类的时候,存储过程基本就会歇菜
3.如果业务数据模型有变动,存储过程必须跟业务代码一起更改文章来源:https://www.toymoban.com/news/detail-493552.html
注意:当然这种说法一般是网上的说辞,我自己也没有在实际项目中用过。不过据说mysql对存储过程调试的优化不好,sqlserver貌似还行。文章来源地址https://www.toymoban.com/news/detail-493552.html
到了这里,关于mysql:存储过程的创建与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!