在存储过程中遇到concat问题

时间:2012-09-16 15:43:01

标签: mysql concat

有谁能告诉我为什么我在MySql中收到此错误: 错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“NULL”附近使用正确的语法

这是我的代码:

CREATE PROCEDURE `msgBoardGetComments2`(

IN _StoryID INT,
IN _RowNum INT

)
BEGIN

DECLARE _sql VARCHAR(1000);

   SET _sql := CONCAT('SELECT c.CommentText, c.CommentDate, a.UserName
      FROM comments c
      LEFT JOIN accounts a
             ON c.UserID = a.UserID
             LEFT JOIN stories s
                    ON c.StoryID = s.StoryID
      WHERE c.StoryID = ',_StoryID, '
      ORDER BY c.CommentDate DESC
      LIMIT 10
      OFFSET ', _RowNum);

PREPARE stmt1 FROM @_sql;
EXECUTE stmt1;

END

1 个答案:

答案 0 :(得分:0)

我相信当_RowNumNULL时,您可能会收到该错误。如果是这种情况,您可以尝试添加IF条件,以便在OFFSET _RowNum_RowNum时可选地包含NULL。您可以在执行前打印查询来测试:

SELECT _sql;
--PREPARE stmt1 FROM @_sql;
--EXECUTE stmt1;

另外,我还没有看到使用下划线(_)进行变量赋值,也许这也可能在这个中扮演一个角色?