DELIMITER $$
/*DROP PROCEDURE IF EXISTS `automachine`.`PRO_PAGER`*/
CREATE DEFINER=`root`@`localhost` PROCEDURE `automachine`.`PRO_PAGER`(
    IN    p_table_name        VARCHAR(1000),
    IN    p_fields            VARCHAR(1000),
    IN    p_page_size            INT,
    IN    p_page_now            INT,
    IN    p_order_string        VARCHAR(128),
    IN    p_where_string        VARCHAR(1000),
    OUT    p_out_rows            INT)
BEGIN    DECLARE m_begin_row INT DEFAULT 0;
    DECLARE m_limit_string CHAR(64);
    SET m_begin_row = (p_page_now - 1) * p_page_size;
    SET m_limit_string = CONCAT(' LIMIT ', m_begin_row, ', ', p_page_size);    SET @COUNT_STRING = CONCAT('SELECT COUNT(*) INTO @ROWS_TOTAL FROM ', p_table_name, ' ', p_where_string);
    SET @MAIN_STRING = CONCAT('SELECT ', p_fields, ' FROM ', p_table_name, ' ', p_where_string, ' ', p_order_string, m_limit_string); 
    PREPARE count_stmt FROM @COUNT_STRING;
    EXECUTE count_stmt;
    DEALLOCATE PREPARE count_stmt;
    SET p_out_rows = @ROWS_TOTAL;    PREPARE main_stmt FROM @MAIN_STRING;
    EXECUTE main_stmt;
    DEALLOCATE PREPARE main_stmt;
END $$DELIMITER ;刚接触MYSQL……
以上是一个分页存储过程,COPY过来的, 我在使用MYSQL query brower ,问题是不知道如何调用参数,执行它,得到结果

解决方案 »

  1.   

    call automachine('','','','','','');
      

  2.   

    关键是那个 “OUT    p_out_rows   ”,怎么处理,它是输出
      

  3.   

     SET @p_page_now=1;
    SET @p_page_size=20;
    SET @m_limit_string=CONCAT(' LIMIT ', 1, ', ', 20);
    SET @p_where_string='WHERE ID > 0';
    SET @p_fields='*';SET @COUNT_STRING = CONCAT('SELECT COUNT(*) INTO @ROWS_TOTAL FROM ', 'record', ' ', 'where id>0');
    SET @MAIN_STRING = CONCAT('SELECT ', '*', ' FROM ', 'record', ' ', 'where id>0', ' ', 'order by id ', @m_limit_string);CALL `automachine`.`PRO_PAGER`('record',@p_fields,20,5,'order by id ', @p_where_string ,@ROWS_TOTAL);
    SELECT @ROWS_TOTAL;
    这样写,没有结果显示……
      

  4.   

    http://www.blogjava.net/nonels/archive/2008/10/09/233324.html
    看下这个例子