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

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

对表oasys_dept,有如下的数据:

需要输入参数id(INT形式),调用存储过程得到结果。

MYSQL实现

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格式的,如果是字符串类型呢,这里把参数由主键集合改成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;

发现效果是一样的。

猜你喜欢

转载自www.cnblogs.com/wsfu/p/10381716.html