第一次在这里发帖。 我试图在存储过程中进行全文搜索,并且由于某种原因,我的一个表导致错误"#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 ;
但这也一直都失败了。
任何帮助都会受到赞赏,因为我浪费了更多时间来解决这个问题,而不是我愿意承认的。
提前感谢您的帮助!