mysql where in形式存储过程如何传递带有单引号的入参

对于存储过程或者函数,有时有这样的一个需求,传递一个参数,输出一个结果。如:我传递一个账号,返回这个账号所拥有的权限。但是如果这个需求改了,我要传递少量的复数个账号,获取这些账号权限,但是账号的个数不限定,则此时需要用关键字IN,并将账号集合传递给存储过程或函数。实现的过程如下: 对表oasys_dept,有如下的数据:

需要输入参数id(INT形式),调用存储过程得到结果。 MYSQL实现(使用方法find_in_set):

DELIMITER $$
CREATE PROCEDURE query_company(IN cname_in VARCHAR(100), OUT result_out INT)
BEGIN
 SELECT count(*) INTO result_out FROM oasys_dept where find_in_set(id, cname_in);
END
$$
DELIMITER ;

调用存储过程

set @ids='1,2';
set @recordcount=0;
CALL query_company(@ids, @recordcount);
SELECT @recordcount;

结果:

这里id是INT类型的,那如果换成字符串类型,我是不是需要像sqlserver一样传递'key1','key2'这样带有多对单引号格式的参数呢?这里把参数由主键集合改成dept_name集合试试:

DELIMITER $$
CREATE PROCEDURE query_company(IN cname_in VARCHAR(100), OUT result_out INT)
BEGIN
 SELECT count(*) INTO result_out FROM oasys_dept where find_in_set(dept_name, cname_in);
END
$$
DELIMITER ;

调用存储过程:

set @ids='家里蹲有限公司,野鸡公司';
set @recordcount=0;
CALL query_company(@ids, @recordcount);
SELECT @recordcount;

效果一样。也就是说,实际操作的时候,不需要传递'key1','key2'这样格式的参数给存储过程,而是'key1,key2'这样的格式,这种形式似乎与sqlserver略不同。

转载于:https://my.oschina.net/u/4108765/blog/3059533

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值