+--------+
1 row in set (0.00 sec)
## 可以看出,虽然我们设置了用户定义变量@id为10,传递@id给存储过程后,在存储过程内部,
## id的初始值总是 null(id_inner_1)。最后id值(id_out=1)传回给调用者。
===================================================================================
## INOUT INOUT参数可以向过程传递信息,如果值改变,则可再从过程外调用。
## MySQL存储过程"inout"参数跟out类似,都可以从存储过程内部传值给调用者。
## 不同的是:调用者还可以通过inout参数传递至给存储过程。
mysql> drop procedure if exists pr_param_inout;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> delimiter //
mysql> create procedure pr_param_inout(inout id int)
-> begin
-> select id as id_inner_1;
-> if (id is not null) then
-> set id=id+1;
-> select id as id_inner_2;
-> else
-> select 1 into id;
-> end if;
-> select id as id_inner_3;
-> end;
-> //
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> set @id=10;
Query OK, 0 rows affected (0.00 sec)
mysql> call pr_param_inout(@id);
+------------+
(北联网教程,专业提供视频软件下载)
……