mysql 分页存储过程调用报错

发布于 2022-09-07 22:07:23 字数 1556 浏览 25 评论 0

以前没有写过存储过程,第一次写遇到了这个问题,没弄明白。希望哪位大神能给出的建议!!!

  • sql 语句如下
CREATE DEFINER=`root`@`%`
PROCEDURE `pager`
(
    IN `table_name` varchar(50),
    IN `columes` varchar(200),
    IN `page_size` int,
    IN `page_now` int,
    IN `where_str` varchar(200),
    IN `order_str` varchar(200),
    OUT `out_rows` int
 )
    DETERMINISTIC
    COMMENT '分页存储过程'
BEGIN
    DECLARE m_begin_row INT DEFAULT 0;
    DECLARE m_limit_string CHAR(64);

    SET m_begin_row = (page_now - 1) * page_size;
    SET m_limit_string = CONCAT('LIMIT', m_begin_row, ',', page_size);

    SET @COUNT_STRING = CONCAT('SELECT COUNT(*) INTO @ROWS_TOTAL FROM ', table_name, ' ', where_str);
    SET @MAIN_STRING = CONCAT('SELECT ', columes, ' FROM ', table_name, ' ', where_str, ' ', order_str,m_limit_string);

    PREPARE count_stmt FROM @COUNT_STRING;
    EXECUTE count_stmt;
    DEALLOCATE PREPARE count_stmt;
    SET out_rows = @ROWS_TOTAL;

    PREPARE main_stmt FROM @MAIN_STRING;
    EXECUTE main_stmt;
    DEALLOCATE PREPARE main_stmt;
END
  • 调用传参如下:
call pager("bco_cms.cms_coupon_user","*",1,3,"","",@result);
  • 报错如下:
1064 - 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 '1' at line 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜宝宝 2022-09-14 22:07:23

LIMIT后少个空格

SET m_limit_string = CONCAT('LIMIT ', m_begin_row, ',', page_size);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文