zoukankan      html  css  js  c++  java
  • 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 函数名;

  • 相关阅读:
    sdk 和 Open API 有什么区别
    分布式锁介绍
    K8s 资源更新机制详解 (ResourceVersion 与 patch)
    Pod 一直处于pending状态但是kubectl describe和logs都没有输出信息的原因
    CAP 理论详解
    kubebuilder中的controller:latest是什么镜像
    Codeforces Round #441 (Div. 1, by Moscow Team Olympiad)
    Matrix Tree 定理及证明
    Codeforces Global Round 15 题解
    Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) 题解
  • 原文地址:https://www.cnblogs.com/yif930916/p/15040111.html
Copyright © 2011-2022 走看看