当前位置:Gxlcms > 数据库问题 > 一天一点MySQL复习——存储过程

一天一点MySQL复习——存储过程

时间:2021-07-01 10:21:17 帮助过:2人阅读

),然后由应用程序调用执行这些SQL语句。

  这些存储在数据库服务器端供客户端调用执行的SQL语句就是存储过程,客户端应用程序可以直接调用并执行存储过程,存储过程的执行结果可返回给客户端。

  存储过程可以:

  • 接受输入参数并以输出参数的形式将多个值返回给调用者。
  • 包含执行数据库操作的语句。
  • 将查询语句执行结果返回到客户端内存中。

  总之,存储过程实际是存储在数据库服务器上的、由SQL语句和流程控制语句组成的预编译集合,它以一个名字存储并作为一个单元处理,可由应用程序调用执行,允许包含控制流、逻辑以及对数据的查询等操作。存储过程可以接受输入参数,并可具有输出参数,还可以返回单个或多个结果集。

 

二、创建存储过程


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

  简单实例:

技术分享

 

三、查看存储过程


show procedure status [like‘procedure_name‘];

  简单实例:

技术分享

  其中‘\G‘表示:以每组显示查询结果

  查看创建语句:

show create procedure procedure_name;

技术分享

 

四、调用存储过程


  不能用select来访问存储过程:

技术分享

  调用存储过程应该用 call:

技术分享

 

五、修改&删除存储过程


  存储过程不能修改,只能删除后在添加

drop procedure 存储过程名;

技术分享

 

六、存储过程参数


 

  函数的参数需要数据类型指定,过程比函数更严格

  过程还有自己的类型限定:

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

  in参数为值传递

  out参数为引用传递,传递至过程中,会将传递参数的本身值清空

  inout参数为引用传递

  实例:

    delimiter $$
    create procedure pro2(in int_1 int,out int_2 int,inout int_3 int)
    begin 
        -- 查看三个变量
        select int_1,int_2,int_3;
    end
    $$
    delimiter ;

技术分享

    delimiter $$
    create procedure pro3(in int_1 int,out int_2 int,inout int_3 int)
    begin
        -- 查看三个局部变量;
        select int_1,int_2,int_3;
        
        -- 修改三个局部变量;
        set int_1 = 10;
        set int_2 = 100;
        set int_3 = 1000;

        -- 查看三个局部变量
        select int_1,int_2,int_3;

        -- 查看三个全局变量
        select @int_1,@int_2,@int_3;

        --修改三个全局变量
        set @int_1 = ‘a‘;
        set @int_2 = ‘b‘;
        set @int_3 = ‘c‘;
        --查看三个全局变量
        select @int_1,@int_2,@int_3;
    end
    $$
    delimiter ;

技术分享

 

一天一点MySQL复习——存储过程

标签:

人气教程排行