MySQL 存储过程参数IN OUT INOUT对比
一、IN
-- 创建测试存储过程 delimiter //
create procedure p_in ( IN num int )
begin
select num;
set num=100;
select num;
end;
//
delimiter ; set @num=100;
call p_in(@num)
二、OUT
-- 创建测试存储过程 delimiter //
create procedure p_out ( OUT num int )
begin
select num;
set num=100;
select num;
end;
// delimiter ; set @num=100;
call p_out(@num)
三、INOUT
-- 创建测试存储过程 delimiter //
create procedure p_inout ( INOUT num int )
begin
select num;
set num=100;
select num;
end;
//
delimiter ; set @num=100;
call p_inout(@num)
总结:
IN 输入参数
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
仅需要将数据传入存储过程,并不需要返回计算后的该值。
只能当做传入参数
OUT 输出参数
该值可在存储过程内部被改变,并可返回
不接受外部传入的数据,仅返回计算之后的值。
只能当做转出参数
INOUT 输入输出参数
调用时指定,并且可被改变和返回
需要数据传入存储过程经过调用计算后,再传出返回值