简体   繁体   English

查询中的 MySQL 存储过程

[英]MySQL Stored Procedure In Query

I want to make a MySQL Stored Procedure我想做一个 MySQL 存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS `SECTOR_INDUSTRY_SP` $$
CREATE PROCEDURE `SECTOR_INDUSTRY_SP`(IN RINSERIES TEXT, IN COMMUNITYIDS TEXT)
    READS SQL DATA
BEGIN
SELECT *
from PROFESSIONAL_IDENTITY_MERGED p , std_company_detail s
where (p.pim_company_id = s.cid) AND p.pim_community_id IN  ('+'+COMMUNITYIDS+'+')
AND p.pim_rin IN  ('+'+RINSERIES+'+');

END $$

DELIMITER ;

As you can see I have two arguments to call this procedure RINSERIES which would be text format like '12312,1234,1239' similarly COMMUNITYIDS is like '2,5,8' but When I would pass, it is interpreting like正如你所看到的,我有两个参数来调用这个过程 RINSERIES 这将是像 '12312,1234,1239' 这样的文本格式,同样的 COMMUNITYIDS 就像 '2,5,8' 但是当我通过时,它的解释就像

SELECT *
    from PROFESSIONAL_IDENTITY_MERGED p , std_company_detail s
    where (p.pim_company_id = s.cid) AND p.pim_community_id IN  ('12312,1234,1239')
    AND p.pim_rin IN  ('2,5,8');

But I want this query to look like following但我希望此查询如下所示

SELECT *
        from PROFESSIONAL_IDENTITY_MERGED p , std_company_detail s
        where (p.pim_company_id = s.cid) AND p.pim_community_id IN  (12312,1234,1239)
        AND p.pim_rin IN  (2,5,8);

How can I do this?我怎样才能做到这一点? Thanks!谢谢!

Try this:尝试这个:

DELIMITER $$

DROP PROCEDURE IF EXISTS `SECTOR_INDUSTRY_SP` $$
CREATE PROCEDURE `SECTOR_INDUSTRY_SP`(IN RINSERIES TEXT, IN COMMUNITYIDS TEXT)
    READS SQL DATA
BEGIN

SET @s = CONCAT("SELECT *
from PROFESSIONAL_IDENTITY_MERGED p , std_company_detail s
where (p.pim_company_id = s.cid) AND p.pim_community_id IN  (", COMMUNITYIDS, ")
AND p.pim_rin IN  (",RINSERIES,")");

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END $$

DELIMITER ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM