Mysql储存过程6: in / out / inout
2024-08-27 04:10:18
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类似, 也就是要变量定义型式: @变量名。
最新文章
- Docker容器环境下ASP.NET Core Web API应用程序的调试
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
- percona server 二进制安装下编译tpcc-mysql的坑
- robotframework接口测试初探3
- JS-concat
- oracle迁移mysql数据库注意
- linux shell中,单引号、 双引号,反引号(``),$()的区别
- DesignPatterns
- c3p0使用记录
- php 变量原理讲解
- 【kmp】 剪花布条 HDU - 2087
- MySQL优化(2)--------常用优化
- select默认选中
- json初接触
- 面试真题--------spring源码解析AOP
- elastic5.4安装错误解决
- Python代码小片段
- 大厂面试官:Java工程师的“十项全能”
- NoSQL数据存储
- vs附加调试 w3p进程没有名称