mysql中的过程procedure

Posted Java_xb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中的过程procedure相关的知识,希望对你有一定的参考价值。

一、创建过程语法

create procedure 过程名字(参数列表)

begin

  -- SQL语句...

end

-- 创建存储过程
delimiter $$
create procedure my_act()
begin
    select * from goods;
end
$$
delimiter ;

二、查看过程

-- 查看所有过程
show procedure status [like ‘pattern‘];

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

三、过程调用

-- 过程调用
call 过程名字();

四、过程删除

-- 删除过程
drop procedure 过程名字;

五、过程参数详解
  相比函数,过程的参数多了三种限定修饰符:

  1. in    -- 值传递, 参数可以是数值或变量, 过程内部的修改不会对外部造成影响。

  2. out   -- 引用传递, 参数只能是变量。在使用前变量的数据会被置空。在过程调用结束后, 才会把过程中产生的值传给外部变量。

  3. inout  -- 引用传递, 参数只能是变量. 可以把外部的数据传给内部使用, 内部的修改也会作用到外部。同样是在调用结束后,才会改变外部的值。

  使用方式:create procedure 过程名([in 参数名 参数类型,][out 参数名 参数类型,][inout 参数名, 参数类型])

-- 创建全局变量
set @ga = 1;
set @gb = 2;
set @gc = 3;

-- 过程参数示例
delimiter $$
create procedure pro_demo(in x int, out y int, inout z int)
begin
    -- 查看数据进入过程后的变化
    select x, y, z;    
    
    -- 修改局部变量的值
    set x = 100;
    set y = 200;
    set z = 300;
    
    -- 查看局部变量的值
    select x, y, z;
    
    -- 查看全局变量的值以观察局部变量的修改对全局有没有影响
    select @ga, @gb,@gc;

    -- 修改全局变量的值
    set @ga = a;
    set @gb = b;
    set @gc = c;

    -- 查看调用结束前全局变量的值以观察过程调用结束后对全局变量的改变
    select @ga, @gb, @gc;
end
$$
delimiter ;

-- 调用过程
call pro_demo(@ga, @gb, @gc);

-- 过程调用结束后再次观察全局变量的值
select @ga, @gb, @gc;

 


以上是关于mysql中的过程procedure的主要内容,如果未能解决你的问题,请参考以下文章

mybatis调用mysql的存储过程(procedure),实现查询操作(student表中的某个年级中的总人数 select 或者 select (*))

MySQL存储过程CREATE PROCEDURE 存储过程名(参数列表)

MySQL存储过程CREATE PROCEDURE 存储过程名(参数列表)

MySQL 在存储过程中的情况:错误代码:1064

MariaDB/MySQL 中的 CREATE PROCEDURE 出现神秘错误

MySQL存储过程(PROCEDURE)