mysql:存储过程的创建与使用

一、创建存储过程

使用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.如果业务数据模型有变动,存储过程必须跟业务代码一起更改

注意:当然这种说法一般是网上的说辞,我自己也没有在实际项目中用过。不过据说mysql对存储过程调试的优化不好,sqlserver貌似还行。

猜你喜欢

转载自blog.csdn.net/weixin_44431073/article/details/128647071
今日推荐