美文网首页
存储过程和函数

存储过程和函数

作者: 小灰灰_5c75 | 来源:发表于2018-09-22 09:51 被阅读0次

    存储过程

    类似Java中的“方法”
    好处:
    1、 代码复用
    2、 简化操作

    存储过程:一组预先编译的SQL语句的集合,理解成批处理语句
    减少编译过程,减少连接数据库次数,提高效率

    一、 创建
    Create procedure 存储过程名(参数列表)
    Begin
    存储存储体/方法体(SQL语句)
    End
    注意:
    1、参数列表
    参数模式 参数名 参数类型
    例如: In stuname varchar(20)

    参数模式:
    In:参数可作为输入,调用方需要传入值
    Out:参数可作为输出,参数可作为返回值
    Inout:参数可做输入输出,该参数需要传入值,又可以返回值

    2、begin end
    如果存储过程只有一句话,begin end 可以不写
    存储过程每条SQL语句结尾都要加分号
    存储过程结尾使用delimiter重新设置:delimiter 结束标记
    例如:delimiter $

    二、 调用
    Call 存储过程名(实参列表);

    1、 空参列表
    例如:
    创建:
    Delimiter 设置为结束标记
    Create procedure mycc()
    Begin
    Sql语句
    End $

    调用:
    Call mycc()$

    2、 in模式过程存储过程
    create procedure mycd(IN username varchar(20),IN userage int,…)
    begin
    declare result int dafault 0; 声明并初始化
    sql语句(IN中的username是局部变量可直接用于where筛选条件)

    select if (result>0,’成功’,’失败’); 使用变量
    end $

    调用:(字符集错误更换字符集即可(set names gbk 等))
    Call mycc(‘lgh’) $

    3、 out模式存储过程
    创建:
    create procedure myce(IN username varcher(10),OUT name varchar(20))
    begin
    select 表.name into name
    sql语句
    end $

    调用:
    Set @nameCall myce(‘lgh’,@name)
    Select @name $

    4、 inout模式存储过程
    创建:
    create procedure mycf(INOUT a int,INOUT b int)
    begin
    set a= a2;
    set b=b
    2;
    end $

    调用:
    Set @a=10 Set @b=11
    Call mycf(@a,@b) Select @a,@b

    三、 删除存储过程
    Drop procedure 单个存储过程名;

    四、 查看存储过程名
    Show create procedure 存储过程名;

    函数
    区别:
    存储过程可有若干返回,适合批量插入和更新
    函数有且仅一个返回,适合做数据处理

    一、创建语法
    Create function 函数名(参数列表) returns 返回类型
    Begin
    函数体(最后要有return 语句)
    End
    参数列表可为空

    例如:
    Create function myf1(num1 float,num2 float) returns float
    Begin
    declear

    仅有一句话时可省略begin and
    使用delimiter语句设置结束标记

    二、调用语法
    Select 函数名(参数列表)

    三、查看函数
    Show create function 函数名;

    四、删除
    Drop function 函数名;

    相关文章

      网友评论

          本文标题:存储过程和函数

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