mysql数据库(10)--变量、存储过程和函数

一、系统变量(系统提供,不用自定义)

1、分类

  • 全局变量:服务器层面上的,必须拥有super权限才能为系统变量赋值,作用域为整个服务器,即针对所有连接(会话)有效
  • 会话变量:服务器为每一个连接的客户端都提供了系统变量,作用域为当前连接(会话)

2、查看系统变量

①查看系统变量

show [global|session] variables like ' ';        # 默认查看的session变量

②查看指定系统变量的值

select @@[global|session].变量名;         # 默认查看的session变量    

③为系统变量赋值

【方式一】

set [global|session] 变量名=值;

【方式二】

set @@global.变量名 = 值;

set @@变量名 = 值;

二、自定义变量

1、用户变量

  • 作用域 :仅针对当前连接(会话)有效
  • 位置:begin end里面,也可以在外面

①声明并赋值

  set @变量名 = 值

       set @变量名:= 值

  select @变量名:= 值

②更新值

【方式一】

  set @变量名 = 值

       set @变量名:= 值

  select @变量名:= 值

【方式二】

  select xx into @变量名 from 表;      # 值来自于表中的字段

③使用

select @变量名

2、局部变量

  • 作用域:仅仅在定义的begin end中有效
  • 位置:只能放在begin end中,而且只能放在第一句

①声明

declare 变量名 类型 [default 值]

②赋值或更新

【方式一】

  set 变量名 = 值

       set 变量名:= 值

  select @变量名:= 值

【方式二】

  select xx into 变量名 from 表;      # 值来自于表中的字段

③使用

  select 变量名

三、存储过程

将一组用于完成特定功能的逻辑语句包装起来,对外暴露名字即可

1、创建

1 create procedure 存储过程名(参数模式 参数名 参数类型)
2 begin
3            存储过程体
4 end

【注意】

①参数模式:in   out     inout

②存储过程体中的每一条sql语句都需要使用;结尾

2、调用

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

①调用in模式下的参数:  call sp(值)

②调用out模式下的参数: set @name; call sp(@name); select @name;

③调用inout模式下的参数: set @name = 值; call sp(@name); select @name;

3、查看

show create procedure 存储过程名;

4、删除

drop procedure 存储过程名;

四、函数

将一组用于完成特定功能的逻辑语句包装起来,对外暴露名字即可  --  有返回值

1、创建

1 create function 函数名(参数名 参数类型) returns  返回类型
2 begin
3       函数体
4 end

【注意】

①函数体中必须要有return语句

2、调用

select 函数名(实参列表);

3、查看

show create function 函数名;

4、删除

drop function 函数名;

原文地址:https://www.cnblogs.com/yif930916/p/15040111.html