美文网首页
daily -- mysql 基础 存储过程

daily -- mysql 基础 存储过程

作者: JackSpeed | 来源:发表于2021-04-01 10:28 被阅读0次

优点

提高代码可复用性
简化操作
减少编译次数和数据库服务器的连接次数,提高了效率

缺点

可移植性差,不通数据库之间往往不兼容

定义

create procedure  存储过程名称(入参)
#入参:入参包含三部分,参数模式(IN、OUT、INOUT)、参数名、参数类型
#例子:IN  userName varchar(50)
begin 
  #sql语句,如果此处只有一条语句,则begin和end可以省略;SQL语句结束必须带分号;存储过程结尾用delimiter重新设置,例如:delimiter $;
end

调用

call  存储过程名称(实参列表);

example 1

delimiter $
create procedure auto_insert_pro()
begin 
 insert into t_test (user_name,user_age)values('哈哈',22);
end $

example 2

delimiter $
create procedure select_pro(IN userName varchar(50))
begin 
  select * from t_test where user_name=userName;
end $
#调用
call select_pro('呵呵');

example 2

delimiter $
create procedure select_prod2(IN userName varchar(50,IN userAge int))
begin 
  #查询数据
  select * from t_test where user_name=userName and user_age=userAge;
end $
#调用
call select_prod2('呵呵',23);

example 3

delimiter $
create procedure select_prod3(IN userName varchar(50),IN userAge int)
begin 
  #声明变量,默认值为''
  declare  result varchar(40) default'';
  #查询数据并且赋值为result变量
  select count(*)  INTO  result 
   from t_test where user_name=userName and user_age=userAge;
  #使用变量result
  select result;
end $
#调用
call select_prod3('呵呵',23);

example 4

delimiter $
create procedure select_prod4(IN userName varchar(50),IN userAge varchar(50))
begin
    #声明变量,默认值为''
    declare  result int default  0;
    #查询数据并且赋值为result变量
    select count(*)  INTO  result
    from t_test where user_name=userName and user_age=userAge;
    #使用变量result
    select if(result>0,'存在用户','不存在用户');
end $
#调用
call select_prod4('呵呵','11');

example 5 带返回值查询

delimiter $
create procedure select_prod5(IN userName varchar(50),OUT userAge varchar(50))
begin
    select  user_age into userAge
    from t_test where user_name=userName;
end $
#调用
set @userAge =0;
call select_prod5('1',@userAge);

example 6 带多返回值查询

delimiter $
create procedure select_prod5(IN userName varchar(50),OUT userAge varchar(50),OUT userId int)
begin
    select  user_age ,user_id into userAge,userId
    from t_test where user_name=userName;
end $
#调用
set @userAge =0;
set @userId=0;
call select_prod6('2',@userAge,@userId);
select  @userAge,  @userId;

example 7 带INOUT

 delimiter $
create procedure select_prod7(INOUT a  int,INOUT  b int )
begin
    set a=a*2;
    set b=b*2;
end $
#调用
set @a =3;
set @b=100;
call select_prod7(@a,@b);
select  @a,  @b;

相关文章

  • daily -- mysql 基础 存储过程

    优点 提高代码可复用性简化操作减少编译次数和数据库服务器的连接次数,提高了效率 缺点 可移植性差,不通数据库之间往...

  • MySQL优化

    mysql-基础-视图,存储过程,触发器 面试题 面试你所要知道的:MySQL存储过程 https://blog....

  • MySQL 存储过程基础

    存储过程语法简述: 声明: DECLARE e int; 定义一个变量e,类型为int型。 关于等号: 赋值使用:...

  • 找工作必备技能

    基础知识Java和JQuery SpringMVC 源码学习-入门 Mysql存储过程,Mysql高级查询相关SQ...

  • 15 MySQL 存储过程

    MySQL 存储过程 [toc] 存储过程概述 存储过程介绍 存储过程,相当于是 MySQL 语句组成的脚本 指的...

  • 存储过程

    使用存储过程 1.存储过程 ​ 需要MySQL5---->> MySQL5添加了对存储过程的支持。 ​ 迄...

  • MySQL存储过程详解 mysql 存储过程

    原文链接 MySQL存储过程详解 1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然...

  • Mysql存储过程

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

  • 面试官突然问我MySQL存储过程,我竟然连基础都不会!(详细)

    MySQL存储过程 一、存储过程 1.1 什么是存储过程 存储过程(Stored Procedure)是在大型数据...

  • MySQL存储过程创建及调用方法

    MySQL存储过程是一个sql语句,那么我们如何创建呢,MySQL存储过程创建及修改,删除操作。 1,存储过程创建...

网友评论

      本文标题:daily -- mysql 基础 存储过程

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