SQL存储过程

作者: 黑哥666 | 来源:发表于2019-01-13 18:32 被阅读4次

1.概念
一组为完成特定功能的SQL语句集,存储在数据库中,经过第一次编辑后再次调用不许再次编辑,用户通过指定存储过程的名称并给出参数(如果有参数)来执行它,它可包括逻辑控制语句和数据操作语句,它可接受参数、输出参数、返回单个或多个结果集以及返回值。
2.编写简单存储过程
创建:

create procedure GetUsers()
begin
  select * from users;
end;

调用:

call GetUsers();

删除:

drop procedure if exists GetUsers;

3.创建带参数的存储过程
示例1
创建:

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;

调用:mysql中变量都必须以@开始

call  GetScores(@minScore,@avgScore,@maxScore);

注:该调用并没有任何输出,只把调用的结果赋值给了调用时出入的变量:@minScore,@avgScore,@maxScore,
如需显示,需用:

select @minScore,@avgScore,@maxScore;

示例2
创建:输入一个用户ID,返回该用户的名字

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

调用:

call  GetNameByID(1,@userName)
select  @userName;

4.创建复杂示例

delimiter //
create  procedure  GetPriceByID(
    in prodID  int,
    in isDisc  boolean,
    out  prodPrice  decimal(8,2))
begin
    declare   tempPrice  decimal(8,2);#声明变量
    declare   prodDiscRate  decimal(8,2);
    set  prodDiscRate = 0.88;

    select  price  from  products
    where  id = prodID
    into  tempPrice;

    if  isDisc  then
        select  tempPrice * prodDiscRate  into  tmpPrice;
    end  if;

    select  tmpPrice  into  prodPrice;

end;
//

调用:

call  GetPriceByID(1,ture,@prodPrice);
select  @prodPrice;

相关文章

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • 8、MySQL存储过程

    存储过程 存储过程是一个SQL语句集合,当主动去调用存储过程时,其中内部的SQL语句会按照逻辑执行。 1、创建存储...

  • SQL Server OFFSET 分页存储过程

    SQL Server OFFSET 分页存储过程 普通sql

  • SQL存储过程

    存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,...

  • sql 存储过程

    begin

  • SQL存储过程

    1.概念一组为完成特定功能的SQL语句集,存储在数据库中,经过第一次编辑后再次调用不许再次编辑,用户通过指定存储过...

  • SQL存储过程

    1、创建存储过程 create procedure mypl()begin insert into表名(字段...

  • SQL之存储过程

    SQL Server 存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集...

  • java基础-day44-MySQL进阶

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句2.之前的sql没有条件判断,没有...

  • MySQL存储过程和存储函数

    一、存储过程 MySQL存储过程存储过程和存储函数参考文章 SQL语句需要先编译然后执行,而存储过程(Stored...

网友评论

    本文标题:SQL存储过程

    本文链接:https://www.haomeiwen.com/subject/ygdldqtx.html