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使用する必要があります。質問、 、およびの可能な値は何ですか?commaplus signcolumnNameparamval

于 2012-08-19T13:22:52.723 に答える