您的位置:首页 > 数据库 > MySQL

MySQL 存储过程传參之in, out, inout 參数使用方法

2017-07-04 18:52 507 查看
存储过程传參:存储过程的括号中。能够声明參数。 语法是 create procedure p([in/out/inout] 參数名  參数类型 ..) in :给參数传入值,定义的參数就得到了值 out:模式定义的參数仅仅能在过程体内部赋值。表示该參数能够将某个值传递回调用他的过程(在存储过程内部。该參数初始值为 null,不管调用者是否给存储过程參数设置值) inout:调用者还能够通过 inout 參数传递值给存储过程,也能够从存储过程内部传值给调用者
假设只想把数据传给 MySQL 存储过程,那就使用“in” 类型參数。 假设只从 MySQL 存储过程返回值,那就使用“out” 类型參数; 假设须要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型參数。  MySQL 存储过程參数假设不显式指定"in"、"out"、"inout",则默觉得"in"。
实例一:存储过程传參 in
DELIMITER $$
CREATE PROCEDURE p1(IN num INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE total INT DEFAULT 0;
WHILE i<=num DO
SET total := i + total;
SET i := i+1;
END WHILE;
SELECT total;
END$$


实例二:存储过程传參 out
CREATE PROCEDURE p2(OUT num INT)
BEGIN
SELECT num AS num_1;
IF (num IS NOT NULL) THEN
SET num = num + 1;
SELECT num AS num_2;
ELSE
SELECT 1 INTO num;
END IF;
SELECT num AS num_3;
END$$
SET @num = 10$$
CALL p2(@num)$$
SELECT @num AS num_out$$


实例三:存储过程传參 inout
CREATE PROCEDURE p3(INOUT age INT)
BEGIN
SET age := age + 20;
END$$
set @currage =18$$
call p3(@currage)$$
select @currage$$


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: