mysql存储过程之存储过程的参数(三)

21 篇文章 0 订阅
17 篇文章 0 订阅

1.存储过程的传入参数IN

需求:传入数据的id返回对应的图片url
DELIMITER $$
-- 入参
CREATE PROCEDURE test(IN book_id BIGINT(11))

BEGIN
	DECLARE url VARCHAR(255) DEFAULT '';
	SELECT  IMG_URL INTO url FROM book_mark WHERE id = book_id;
	SELECT url;

END
$$

DELIMITER ;

总结

1.传入参数,类型为IN,表示该参数的值必须在调用存储过程时指定,如果不显示指定为IN,那么默认就是IN类型
2.IN类型参数一般只用于传入,在调用存储过程中一般不做修改和返回
3.如果调用存储过程中需要修改和返回值,可以使用OUT类型参数

 

2.存储过程的输出参数OUT

需求:传入数据的id返回对应的图片url
DELIMITER $$
-- 入参
CREATE PROCEDURE test1(IN book_id BIGINT(11), OUT my_url varchar(255))

BEGIN
	SELECT  IMG_URL INTO my_url FROM book_mark WHERE id = book_id;
END
$$

DELIMITER ;


-- 声明变量
SET @my_url:='';
-- 调用
CALL test1(2, @my_url);

SELECT @my_url as url;

总结

1.传出参数:在调用存储过程,可以改变其值,并可返回
2.OUT是传出参数,不能用于传入参数值
3.调用存储过程时,OUT参数也需要指定,但必须是变量,不能是常量
4.如果既需要传入,又需要传出,可以使用INOUT类型参数

 

3.存储过程的可变参数INOUT 

需求:传入的id,url,可以为传出参数
DELIMITER $$
-- 入参
CREATE PROCEDURE test2(INOUT book_id BIGINT(11), INOUT my_url varchar(255))

BEGIN
    SET book_id = 5;
    SET my_url = 'hahaha';
	SELECT ID, IMG_URL INTO book_id,my_url FROM book_mark WHERE id = book_id;
END
$$

DELIMITER ;


-- 声明变量
SET @book_id:=0;
SET @my_url:='';
-- 调用
CALL test2(@book_id, @my_url);

SELECT @my_url as url, @book_id as id;

总结

1.可变变量INOUT类型:调用时可传入值,在调用过程中,可修改其值,同时也可返回值
2.INOUT参数集合了IN和OUT参数的特性
3.INOUT调用时传入的是变量而非常量

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值