#1210 - 存储过程内的AGAINST参数不正确

时间:2015-03-19 20:13:49

标签: mysql

第一次在这里发帖。 我试图在存储过程中进行全文搜索,并且由于某种原因,我的一个表导致错误"#1210 - AGAINST"的参数不正确。以下是该过程的代码:

DELIMITER $$
CREATE PROCEDURE getHits(
  IN qry VARCHAR (100),
  IN shft VARCHAR(10),
  IN offc INT,
  OUT proj INT,
  OUT notes INT)
BEGIN
  SELECT count(*)
    INTO notes
  FROM Shift
  WHERE Shift_ID = shft 
    AND O_ID= offc 
    AND MATCH(Notes) AGAINST(qry IN BOOLEAN MODE);

  SELECT count(*)
    INTO proj
  FROM Pers_On_Shift
  WHERE Shift_ID = shft 
    AND Office_ID= offc 
    AND MATCH(Project) AGAINST(qry IN BOOLEAN MODE);
END $$
DELIMITER ;

第一个"选择"语句执行没有问题,但第二个抛出错误"#1210 - 不正确的参数AGAINST"。我感到困惑的是,为什么它在第一种情况下接受qry而在第二种情况下不接受qry。

我在程序之外运行了这些查询,两者都没有问题。我在搜索的列上有全文索引。我也试过在准备好的声明中运行它:

DELIMITER $$
CREATE PROCEDURE getHits(
  IN qry TEXT,
  IN shft VARCHAR(10),
  IN offc INT,
  OUT proj INT)
BEGIN
  SET @shft=shft;
  SET @offc=offc;
  SET @match_query=qry;

  SET @Dyna_SQL="SELECT count(*)
                 FROM Shift
                 WHERE Shift_ID = ?
                  AND O_ID= ? 
                  AND MATCH(Notes) AGAINST(? IN BOOLEAN MODE);";

PREPARE stmt FROM @Dyna_SQL;
EXECUTE stmt USING @shft,@offc,@match_query;
DEALLOCATE PREPARE stmt;

END $$
DELIMITER ;

但这也一直都失败了。

任何帮助都会受到赞赏,因为我浪费了更多时间来解决这个问题,而不是我愿意承认的。

提前感谢您的帮助!

0 个答案:

没有答案