MySQL存储过程的参数为列表

时间:2018-11-01 06:14:47

标签: mysql list stored-procedures parameters

我有一个如下的MySQL语句:

select * from jobs where job_status in (6,9,10) and due_date>'2018-10-31'

我想创建一个存储过程,使其具有2个参数:

  

job_status

  

到期日期

我不确定如何定义“ job_status”参数。它是整数列表,可以是任意数量的值。例如(1,2,3,4,5)或(1)

3 个答案:

答案 0 :(得分:0)

您可以通过声明如下变量来尝试

DECLARE @LIST VARCHAR(200)
DECLARE @vdate date
SET @LIST = '1,3'
SET @vdate='2018-10-31'

select * from jobs where job_status in (@LIST) and due_date>@vdate

答案 1 :(得分:0)

   DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_selectjobs` $$
CREATE DEFINER=`root`@`%` PROCEDURE `sp_selectjobs`(
  IN job_status_in VARCHAR(255),
  IN due_date_in datetime    )
BEGIN
SELECT * FROM jobs
WHERE job_status in (@job_status_in) AND due_date>'@due_date_in'

END $$

DELIMITER ;

您可以创建这样的存储过程,并且可以使用自己的参数来调用该存储过程

call sp sp_selectjobs('1,2,3,4','2018-11-2') 

像这样

答案 2 :(得分:0)

在Mysql中,您必须创建存储过程,例如:

DELIMITER //
DROP PROCEDURE IF EXISTS up_getJobsByStatusAndDuedate //
CREATE PROCEDURE `up_getJobsByStatusAndDuedate`(pJobStatusList TEXT, pDuedate varchar(10))
BEGIN

    select * from jobs where job_status in (pJobStatusList) and due_date> pDuedate;

END//

然后您可以在Workbench上测试呼叫存储:

call up_getJobsByStatusAndDuedate('6,9,10', '2018-10-31');
相关问题