0

我在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 $$

我怎样才能使这项工作?

非常感谢您的帮助

4

1 回答 1

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多少?

于 2012-08-19T13:22:52.723 回答