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的更多相关文章

  1. MySQL 储存过程-原理、语法、函数详细说明

    Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之就是一组已经写好的命 ...

  2. mysql储存过程入门学习

    转载至:https://www.yiibai.com/mysql/getting-started-with-mysql-stored-procedures.html 1.mysql储存过程的创建 DE ...

  3. Mysql 储存过程以及 python callproc调用

    一.存储过程(stored procedure) 存储过程将存入的一系列SQL语句进行预编译,执行并存放在数据库中,之后如果需要使用sql语句对这一组sql进行访问时可以直接提取(很好理解 存储过程就 ...

  4. MySQL储存过程

    储存过程 本文章原创,转载需注明出处. 前提: 在大型数据库中 来源: 为了完成特定功能的SQL语句集 定义: 储存在数据库中, 用户通过指定储存过程的名字并给出参数(带有参数的)来执行它 声明: 储 ...

  5. 从一个例子入门Mysql储存过程

    例子 -- 秒杀执行存储过程 DELIMITER $$ -- 将分隔符; 转换为 $$ -- 定义存储过程 -- 参数: in 输入参数; out 输出参数 -- row_count():返回上一条修 ...

  6. Mysql储存过程7: case

    #用在储存过程中: create procedure k() begin declare number int; )); case number then select '>0'; else s ...

  7. Mysql储存过程4:mysql变量设置

    默认全局变量是两个@@开头, 可用show variables查看所有默认变量: @@user #declare定义变量只能用在储存过程中 #declare 变量名 数据类型 可选类型 declare ...

  8. Mysql储存过程2:变量定义与参数传递

    #储存过程 中的变量定义 declare 变量名 类型 可选类型 -- 跟建表差不多 create procedure p() begin ); ; select age+number; end$ / ...

  9. Mysql储存过程1: 设置结束符与储存过程创建

    #显示储存过程 show procedure status; #设置结束符 delimiter $; #创建储存过程 create procedure procedure_name() begin - ...

随机推荐

  1. SQL 抛出异常的例子 RAISERROR 的使用

    先创建一个procedure 当输入的值不在0-100之间时会报出异常 create proc proc_x @a int as begin ) ,) else select @a end go 测试 ...

  2. HDU——1788 Chinese remainder theorem again

    再来一发水体,是为了照应上一发水题. 再次也特别说明一下,白书上的中国剩余定理的模板不靠谱. 老子刚刚用柏树上的模板交上去,简直wa出翔啊. 下面隆重推荐安叔版同余方程组的求解方法. 反正这个版本十分 ...

  3. sql语句左链接left join--3张表关联

    表A---------------------------------关联第一张表B-----------------------关联第二张表c select * fomr 表名A left join ...

  4. java中main函数怎么调用外部非static方法

    使用外部方法时(不管是static还是非static),都要先new一个对象,才能使用该对象的方法. 举例如下: 测试函数(这是错误的): public class Test { public sta ...

  5. 常州day3

    Task1 小 W 得到了一堆石子,要放在 N 条水平线与 M 条竖直线构成的网格的交点上.因为小 M 最喜欢矩形了, 小 W 希望知道用 K 个石子最多能找到多少四边平行于坐标轴的长方形,它的四个角 ...

  6. 【BZOJ3437】小P的牧场(动态规划,斜率优化)

    [BZOJ3437]小P的牧场(动态规划,斜率优化) 题面 BZOJ 题解 考虑暴力\(dp\),设\(f[i]\)表示强制在\(i\)处建立控制站的并控制\([1..i]\)的最小代价. 很显然,枚 ...

  7. 【LOJ6436】【PKUSC2018】神仙的游戏(NTT)

    [LOJ6436][PKUSC2018]神仙的游戏(NTT) 题面 LOJ 题解 看到\(zsy\)从\(PKUSC\)回来就秒掉了这种神仙题 吓得我也赶快看了看\(PKUSC\)都有些什么神仙题 然 ...

  8. 康托展开&康托逆展开 的写法

    康托展开 康托展开解决的是当前序列在全排序的名次的问题. 例如有五个数字组成的数列:1,2,3,4,5 那么1,2,3,4,5就是全排列的第0个[注意从0开始计数] 1,2,3,5,4就是第1个 1, ...

  9. nginx服务器去掉url中的index.php 和 配置path_info

    隐藏index.php server { listen 80; server_name yourdomain.com; root /home/yourdomain/www/; index index. ...

  10. 程序开发常用第三方类库一览表(VendorLib)

    以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ...