DROP PROCEDURE IF EXISTS dengx.page_list//
CREATE PROCEDURE dengx.page_list(
   IN page_field VARCHAR(100),
   IN page_table VARCHAR(100),
   IN page_where INT,
   IN page_sort  INT,
   IN page_index INT,
   IN page_size  INT
)
BEGIN
   IF page_field = '' THEN
      SET page_field = '*';
   END IF;   
   
   IF page_size <= 5 THEN 
      SET page_size = 5;
   END IF;
   
   IF page_index <= 1 THEN
      SET page_index = 0;
   END IF;
   
   SET @strSql = CONCAT('SELECT ',page_field,' FROM ',page_where,' ',page_sort,' LIMIT ',page_size,' OFFSET ',page_index*page_size);
   
   PREPARE stmt FROM @strSql;
   EXECUTE stmt;
   DEALIOCATE PREPARE stmt;
   
END//

解决方案 »

  1.   

    SET @strSql = CONCAT('SELECT ',page_field,' FROM ',page_where,' ',page_sort,' LIMIT ',page_size,' OFFSET ',page_index*page_size);
    这儿有问题,你的 page_table  哪儿去了?
      

  2.   


    眼花,写掉了, 应该是这样,  但还是不行, 好像不是错在那   SET @strSql = CONCAT('SELECT ',page_field,' FROM ',page_table,' WHERE ',page_where,' ',page_sort,' LIMIT ',page_size,' OFFSET ',page_index*page_size);
      

  3.   

    page_sort 前面的 order by 哪儿去了?
      

  4.   

    谢谢acmain. 已经搞定了, 因为排序方法不确定, 那个 order by 是 page_sort里写的 DROP PROCEDURE IF EXISTS dengx.page_list//
    CREATE PROCEDURE dengx.page_list(
       IN page_field VARCHAR(100),
       IN page_table VARCHAR(100),
       IN page_where INT,
       IN page_sort  INT,
       IN page_index INT,
       IN page_size  INT
    )
    BEGIN
       IF page_field = '' THEN
          SET page_field = '*';
       END IF;   
       
       IF page_size <= 5 THEN 
          SET page_size = 5;
       END IF;
       
       IF page_index <= 1 THEN
          SET page_index = 0;
       END IF;
       
       SET @strSql = CONCAT('SELECT ',page_field,' FROM ',page_table,' WHERE ',page_where,' ',page_sort,' LIMIT ',page_size,' OFFSET ',page_index*page_size);
       
       PREPARE stmt FROM @strSql;
       EXECUTE stmt;
       DEALLOCATE PREPARE stmt;
       
    END//
      

  5.   

    报错是在 -- DEALLOCATE PREPARE stmt;  这行, 关键字写错