zoukankan      html  css  js  c++  java
  • mysql存储过程和函数

    需求背景:

      显示程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修改程序

      存储过程相对于java程序开发来说,不是很方便阅读和维护,所以不建议在程序中去调用存储过程来做一些业务操作

      当mysql内部的函数无法满足我们的需求时,我们可以自定义函数来满足

    本文内容:

      详解存储过程的使用、详解自定以函数的使用

    准备数据:

      create table you_l(

        id int not null primary key comment '编号',

        age smallint unsigned not null comment '年龄',

        name varchar(16) not null comment '姓名'

      )comment '用户表';

    存储过程:

    概念:

      一组预编译好的sql语句集合,理解为成批处理语句。

      好处:

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

    创建存储过程:
        create procedure 存储过程名([参数模式] 参数名 参数类型)
        begin
            存储过程体
        end

     参数模式有3种:
        in:该参数可以作为输入,也就是该参数需要调用者传入值
        out:该参数可以作为输出,也就是说该参数可以作为返回值
        inout:该参数即可以作为输入也可以作为输出
        参数模式默认为 in
        一个存储过程可以有多个输入,多个输出、多个输入输出参数
     

    删除存储过程:

      drop procedure if exists 存储过程名

    调用存储过程:

      call 存储过程名

    查看存储过程:

      show create procedure 存储过程名称

    修改存储过程:

      只能删除已经存在,再创建一个新的


     创建一个不带参的存储过程:

             ->delimiter ;        //重新设置结束符为  ;

        ->call yu_name();      //调用存储过程

    创建一个带参的存储过程:

     创建一个带out参数的存储过程:

    创建带inout的存储过程:

    函数:

      概念:

        一组预编译好的sql语句集合,理解成批量处理语句。和java方法相似,但是必须又返回值。

      创建函数:(参数是可选的,返回值是必须的)

        create function 方法名(参数名 参数类型)

          returns 返回值类型

          begin

            函数体

          end 

           调用函数:

        select 方法名;

      删除函数:

        drop function if exists 方法名 

      查看函数详细:

        show create function 函数名

      实例:

      实例1:创建无参函数

        ->delimiter $

        ->create function ee()

        ->  returns int

        ->  begin

        ->    declare max_id int default 0;

        ->    select max(id) into max_id from yu_l;

        ->    return max_id;

        ->  end $

        ->delimiter ;

        ->select ee();

        实例2:创建有参函数

        ->delimiter $

        ->create function cc(v_name varchar(16))

        ->  returns int

        ->  begin

        ->    declare r_id int;

        ->    select id into r_id from yu_l where name=v_name;

        ->    return r_id;

        ->  end $

        ->delimiter ;

        -> select cc(name) from yu_l;

  • 相关阅读:
    《DSP using MATLAB》Problem 8.9
    《DSP using MATLAB》Problem 8.8
    PID库与PID基本优化(四)
    PID库与PID基本优化(三)
    PID库与PID基本优化(二)
    PID库与PID基本优化(一)
    Mahony姿态解算算法笔记(二)
    《理解矩阵》笔记
    Mahony姿态解算算法笔记(一)
    洛谷p1082 同余方程
  • 原文地址:https://www.cnblogs.com/fbbg/p/13538390.html
Copyright © 2011-2022 走看看