我有一个如下的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)
答案 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');