mysql执行存储过程出错

YYlxid 2014-03-15 09:58:46
存储过程 用于分页为:

DELIMITER $$

DROP PROCEDURE IF EXISTS `p_pageList` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `p_pageList`(
m_pageNo int,
m_perPageCnt int,
m_column varchar(1000),
m_table varchar(1000),
m_condition varchar(1000),
m_orderBy varchar(1000),
out m_totalPageCnt int
)
BEGIN
SET @pageCnt=1;
SET @limitStart=(m_pageNo-1)*m_perPageCnt;
SET @limitEnd=m_perPageCnt;
SET @sqlCnt=CONCAT('select count(*) into @pageCnt from ',m_table);
SET @sql=CONCAT('select ',m_column,' from ',m_table);
IF m_condition IS NOT NULL AND m_condition <>'' THEN
SET @sql=CONCAT(@sql,' where ',m_condition);
SET @sqlCnt=CONCAT(@sql,' where ',m_condition);
END IF;
IF m_orderBy IS NOT NULL AND m_orderBy <>'' THEN
SET @sql=CONCAT(@sql,' order by ',m_orderBy);
END IF;
SET @sql=CONCAT(@sql,' limit ',@limitStart,',',@limitEnd);
SELECT @sql;
PREPARE s_cnt from @sqlCnt;
EXECUTE s_cnt;
DEALLOCATE PREPARE s_cnt;
SET m_totalPageCnt=@pageCnt;
PREPARE record from @sql;
EXECUTE record;
DEALLOCATE PREPARE record;
END $$

DELIMITER ;

执行过程中同时输出执行的语句。。。

CALL p_pageList(1,10,'*','movie','genres','movieid',@X);

提示错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where genres' at line 1
但是我复制了所输出的sql语句执行,可以输出结果。。所以不知道错在哪里???只要condition那个地方写成'',则可以得到结果
请问where语句那里错在哪里?
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
benluobo 2014-03-15
  • 打赏
  • 举报
回复
这是执行的语句 select * from movie where genres where genres 这肯定是错的 看这里 SET @sql=CONCAT(@sql,' where ',m_condition); SET @sqlCnt=CONCAT(@sql,' where ',m_condition); 下面一句是否应该是 SET @sqlCnt=CONCAT(@sqlCnt,' where ',m_condition);
YYlxid 2014-03-15
  • 打赏
  • 举报
回复
我知道错在哪里了 sqlCnt写了两个where!!

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧