我在mysql中有一个存储过程无法工作我需要比较一个他的名字我得到的列作为参数和一个日期,他的值我得到的参数'我的语法就是这个。
DELIMITER $$
CREATE DEFINER=`vladiraheli`@`%` PROCEDURE sheepfarm.create_date_filter
(
in columnName VARCHAR(100),
in param varchar(100),
in val varchar(100)
)
BEGIN
declare formated_date date;
set formated_date = str_to_date(val,'%Y-%m-%d');
set @stmt1 = concat(
'select * from sheepfarm.Sheep where ' +
columnName + param + 'formated_date') ;
prepare stmt1 from @stmt1;
EXECUTE stmt1;
END $$
我该怎样才能做到这一点?
非常感谢你的帮助
答案 0 :(得分:0)
这句话有问题:
set @stmt1 = concat('select * from sheepfarm.Sheep where ' +
columnName + param + 'formated_date') ;
formated_date
作为字符串传递,而不是作为变量传递。
set @stmt1 = concat('select * from sheepfarm.Sheep where ',
columnName, ' ', param, ' ', formated_date) ;
由于您使用的是CONCAT
,因此您应该使用comma
代替plus sign
。
问题,columnName
,param
和val
的可能值是什么?