美文网首页
代码执行结构 函数 存储过程

代码执行结构 函数 存储过程

作者: 咸鱼有梦想呀 | 来源:发表于2017-10-25 21:23 被阅读0次

    一、代码执行结构

    • 顺序结果
    • 分支结构
    • 循环结构

    1.分支结构

    分支结构:实现多个代码块,按照条件选择性执行某段代码
    在MySQL中只有if分支

    基本语法:

    if 条件判断 then
    -- 满足条件要执行的代码
    else
    -- 不滿足条件要执行的代码
    end if;

    触发器结合if分支

    触发器结合if分支 影响

    2.循环结构

    循环结构:某段代码在指定条件下执行重复。

    while循环

    基本语法

    while 条件判断 do
    -- 满足条件要执行的代码
    -- 变更循环条件
    end while;

    (1)循环控制

    在循环内部进行循环判断和控制

    iterate:迭代,类似continue,后面代码不执行,循环重新来过
    leave:离开,类似break,整个循环接收

    使用方式:
    iterate/leave 循环名字;

    定义循环名字
    循环名字:while 条件 do
    -- 循环体
    -- 循环控制
    leave/iterate 循环名字;
    end while;

    二、函数

    函数:将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结果执行即可。(代码复用)

    • 系统函数
      系统定义好的函数,直接调用即可。
      任何函数都有返回值,因此函数的调用是通过select调用。

    MySQL字符串的基本操作单位

    substring:字符串截取(字符为单位)

    字符串截取

    char_length:字符长度
    length:字节长度

    字符,字节长度

    instr:判断字符串是否在某个具体的字符串中存在,存在返回位置

    字符串寻找

    lpad:左填充,将字符串按照某个指定的填充方式,填充到指定长度(字符单位)

    字符串填充

    insert:替换,找到目标位置,指定长度的字符串,替换成目标字符串

    字符串替换

    strcmp:compere,字符串比较

    字符串比较
    • 自定义函数

    函数要素:函数名,参数列表(形参和实参),返回值,函数体(作用域)

    (1)创建函数

    创建语法
    create function 函数名([形参列表])returns 数据类型 -- 规定要返回的数据类型
    begin
    -- 函数体

    -- 返回值:return 类型(指定数据类型);
    end

    创建函数

    自定义函数和系统函数调用方式是一样的:select 函数名([实参列表])

    调用函数

    (2)查看函数

    查看所有函数:
    show function status;
    查看函数的创建语句:
    show create function 函数名;

    查看所有函数 查看函数的创建语句

    (3)修改函数&&删除函数

    函数只能先删除后新增,不能修改

    drop function 函数名;

    删除函数

    函数参数
    参数分为两种

    • 形参:定义时的参数
    • 实参:调用时的参数(实参可以是数值也可以是变量)

    必须指定数据类型
    function 函数名(形参名 字段类型) returns 数据类型

    举个栗子

    函数运用 函数检验

    作用域

    MySQL中全局变量可以在任何地方使用;局部变量只能在函数内部使用

    全局变量:使用set关键字定义,使用@符号标志
    局部变量:使用declare关键字声明,没有@符号。所有的局部变量的声明,必须在函数体开始之前

    局部变量的应用

    三、存储过程(procedure)

    存储过程是一种没有返回值的函数,是一种用来处理数据的方式。

    (1)创建过程

    create procedure 过程名([参数列表])
    begin
    -- 过程体
    end

    创建过程

    (2)查看过程

    函数的查看方式完全适用于过程:关键字换成procedure

    查看所有过程
    show procedure status;
    或者
    show procedure status [like 'pattern'];

    查看所以过程

    查看过程创建语句
    show create procedure 过程名;

    查看过程创建语句

    (3)调用过程

    过程没有返回值:select是不能访问的

    调用过程关键字:call

    调用过程

    (4)修改过程&&删除过程

    过程不能修改,只能先删除后新增

    删除过程
    drop procedure 过程名;

    删除过程

    (5)过程参数

    函数的参数需要数据类型指定,过程需要类型限定:三种类型

    • in:数据只是从外部传入给内部使用(值传递)。可以是数值也可以是变量
    • out:只允许过程内部使用(不用外部数据),给外部使用的(引用传递:外部的数据会被先清空才回进入到内部),只能是变量
    • inout:外部可以在内部使用,内部修改也可以给外部使用,典型的引用传递:只能传变量

    基本使用
    create procedure 过程名(in 形参名 数据类型,out 形参名 数据类型,inout 形参名 数据类型)

    过程参数

    调用:out和inout类型的参数必须传入变量,不能是变量。

    调用

    存储过程对于变量的操作是滞后的:是在存储过程调用结束的时候,才会重新将内部的值赋给外部传入全局变量

    过程参数 调试

    最后,在存储过程调用结束之后,系统会将局部变量重复返回给全局变量(out和inout)

    验证

    相关文章

      网友评论

          本文标题:代码执行结构 函数 存储过程

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