其实存储过程也可以叫做过程,而函数也可以叫做存储函数,两者都是处理数据的一种方式,但是不同在于函数是必须要有返回值的,而过程则没有返回值,过程可以理解为是一种用来处理数据的没有返回值的函数,但是他们的语法又存在区别,接下来详细的介绍一下存储过程的使用

创建过程:

// 创建过程
create procedure 过程名字([参数列表])
begin
 -- 过程代码
end;

// 示例
create procedure getUserNames()
begin
    select uname from user;
end;

这里需要说一下过程的参数列表,创建过程时需要用到限定类型,有三个:in、out、inout

in

传入数据供过程内部使用,可以是变量或者值,传入的参数值不管在过程内部怎么修改,在过程外部不受影响。

out

传入的数据只能是变量,传入到过程之后先置为NULL,过程内部修改变量值,外部受影响

inout

传入的数据只能是变量,过程内部修改变量值,外部受影响

就这几个参数,光说也不是很好理解,下边提供两个过程,通过改变setName的限定值来看一下三者的区别

// setName的一个过程,依次修改限定的值
create procedure setName(in name varchar(30))
BEGIN
        // 先看一下传递进来的值
	SELECT name as first_name;
        // 过程内部改变传递进来的值
	set name = "123456";
        // 看一下修改之后的值
	select name as second_name;
END;

// getName的一个过程,看一下出入的参数值是否被修改
create procedure getName()
BEGIN
        DECLARE name VARCHAR(30) ;
	set name = "123";
	select name as init_name;    
        // 将值传入到setName修改值
	call setName(name);
	select name as last_name;
END;

依次修改setName的参数列表中限定词,看一下打印情况,作用一目了然

查看过程:

// 查看所有的存储过程
show procedure status\G;

// 按着名称查看存储过程
show procedure status like '%me';

// 查看过程的创建语句
show create procedure 过程名
show create procedure setName\G;

使用过程:

// 使用call关键字进行过程的使用
call getNames;

删除过程:

// 删除的基本语法都是 drop 类型   名称
drop procedure setName;

以上就是对存储过程的基本介绍