MySQL中的IN、OUT、INOUT类型

来源:互联网 发布:vb自动网页弹框 编辑:程序博客网 时间:2024/05/18 00:50

MySQL中存储过程的参数中有IN、OUT、INOUT类型,但是函数的参数只能是IN类型的。

IN类型

使用IN类型来传递信息,存储过程内部可以对参数的值进行修改,但是修改后的值调用者不可见。

delimiter //create procedure pr_test(in id int)beginif (id is not null)then set id = id + 1;end if;select id as in_id;end;//delimiter ;set @id = 10;/*-----运行的结果in_id = 11-----*/call pr_test(@id);/*-----运行的结果in_id = 10-----*/select @id as out_id;

可以看出虽然设置了变量id的值为10,但是在存储过程内部修改了id的值为11,id的值并未返回给调用者。

OUT类型

OUT参数用于传值给调用者,存储过程内部,该值的默认值为NULL,无论调用者是否传值给存储过程

delimiter //create procedure pr_test(out id int)beginif(id is not null)then set id = id + 1;else set id = 0;end if;select id as in_id;end;//delimiter ;set @id = 10;/*-----运行的结果in_id = 0-----*/call pr_test(@id);/*-----运行的结果in_id = 0-----*/select @id as out_id;

可以看出虽然设置了变量id的值为10,但是在存储过程内部id的值为null,最后id的值在存储过程内修改后返回调用者。

INOUT类型

INOUT类型可以向存储过程传递信息,如果值改变,再返回给调用者

delimiter //create procedure pr_test(inout id int)beginif(id is not null)then set id = id + 1;else set id = 0;end if;select id as in_id;end;//delimiter ;set @id = 10;/*-----运行的结果in_id = 11-----*/call pr_test(@id);/*-----运行的结果in_id = 11-----*/select @id as out_id;

可以看出设置了变量id的值为10,在存储内部将id的值修改为11,最后id的值返回给调用者。

2 0
原创粉丝点击