了解sql存储过程

        存储过程的定义:在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句 和 数据操纵语句 , 它可以接受参数 , 输出参数 , 返回单个或多个结果集以及返回值 。

优点:精简,可维护性高,安全性更高。

缺点:可移植性差

我这里就简单介绍一下优缺点,我主要是来讲一下怎么用。

存储过程的基本格式;

create produce 存储名(参数)

begin

   sql语句;

end;

怎么调用:call 存储名(参数);

怎么删除:drop produce if exists 存储名;

怎么使用带参数的存储过程,我举个例子

create procedure GetScores(
    out minScore decimal(8,2),
    out avgScore decimal(8,2),
    out maxScore decimal(8,2)
)
begin
    select min(score) into minScore from user;
    select avg(score) into avgScore from user;
    select max(score) into maxScore from user;
end;

调用此存储过程,首先参数前面你要加@

call getscores(@minscore,@avgscore,@maxscore)//写存储过程的时候不用加@.当你传入参数使用的时候要加上@。为了减少出错,写存储过程的时候变量名最好都加个2@.

记住返回的值都在@minscore,@avgscore,@maxscore这几个参数里也就是调用前世参数,调用后是结果。

所以选取值时应用select @minscore,@avgscore,@maxscore.

注意:记住sql的三个参数MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

解释一下就是通过INTO来传值。

create procedure GetNameByID(
    in userID int,
    out userName varchar(200)
)
begin
    select name from user
    where id = userID
    into userName;
end;

上面的代码就是传入useid,然后传出usename

原文地址:https://www.cnblogs.com/xyyshishuaige/p/8667445.html