首页 > 代码库 > Mysql储存过程6: in / out / inout
Mysql储存过程6: in / out / inout
in 为向函数传送进去的值
out 为函数向外返回的值
intout 传送进去的值, 并且还返回这个值
create procedure q1(in number int,out name varchar(100)) begin if number > 1 then select ‘true‘; else select ‘false‘; end if; end$
调用时:
call q1(1, @value);
注意, 第二个参数要为变量定义的型式。
这个函数并没有向外发送改变后的name值, 所以调用后 select @value 为null。
再看看out:
mysql> create procedure qq(number int,inout name varchar(100)) -> begin -> if number > 1 then -> select ‘true‘; -> else -> select ‘false‘; -> end if; -> set name=user(); -> end$ Query OK, 0 rows affected (0.00 sec) mysql> call qq(1,@as)$ +-------+ | false | +-------+ | false | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> select @as$ +----------------+ | @as | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec) mysql>
inout例子:
mysql> create procedure qqq(inout name varchar(100)) -> begin -> set name=database(); -> end$ Query OK, 0 rows affected (0.00 sec) mysql> call qqq(1)$ ERROR 1414 (42000): OUT or INOUT argument 1 for routine test.qqq is not a variable or NEW pseudo-var iable in BEFORE trigger mysql> call qqq(@abc)$ Query OK, 0 rows affected (0.00 sec) mysql> select @abc$ +------+ | @abc | +------+ | test | +------+ 1 row in set (0.00 sec) mysql>
注意参数型式, 因为他要发送回来, 这个inout的参数型式要跟out类似, 也就是要变量定义型式: @变量名。
Mysql储存过程6: in / out / inout
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。