分页存储过程
DROP PROCEDURE `pr_pager`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_pager`(    IN     p_table_name        VARCHAR(1024),        
    IN     p_fields            VARCHAR(1024),        
    IN     p_page_size            INT,                
    IN     p_page_now            INT,                
    IN     p_order_string        VARCHAR(128),        
    IN     p_where_string        VARCHAR(1024),        
     OUT     p_out_rows            INT                    
    
)
    COMMENT '分页存储过程'
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;
    
ENDphp 调用分页存储过程
$Rs_Sql_Change_Monitor=mysql_query("call pr_pager('change_monitor','Id,Date,Schedule,Type,Description,Manage1,DemandSide',10,1,'','',@p_out_rows)");
         while($rows=mysql_fetch_array($Rs_Sql_Change_Monitor)){
             echo $rows[Schedule];
         }
现怎么取到  p_out_rows 输出参数 php应该怎么写请高手指点

解决方案 »

  1. 额外使用一次查询可以获得你要的结果:
    $Rs_Sql_Change_Monitor=mysql_query("call pr_pager('change_monitor','Id,Date,Schedule,Type,Description,Manage1,DemandSide',10,1,'','',@p_out_rows)");
             while($rows=mysql_fetch_array($Rs_Sql_Change_Monitor)){
                 echo $rows[Schedule];
             }
    $query=mysql_query("select @p_out_rows");
    $v=mysql_fetch_array($query);
      

类似问题 »