[共享]我的高效mysql分页存储过程...
总是习惯了mssql上面的存储过程分页,然后结合AspNetPager分页控件(http://www.webdiyer.com/AspNetPager/default.aspx),这样就完成了记录的分页显示;   
 由于最近用到mysql,由于mssql,mysql两者的表达语法和语法约束上的区别,导致写起mysql上的分页版本有点“复杂”。经过查找一番资料后终于把它“复制”了。   
 存储过程分页的基本原理:我们先对查找到的记录集(支持输入查找条件_WhereClause和排列条件_OrderBy)的key字段临时存放到临时表,然后构建真正的记录集输出。   
 CREATE   PROCEDURE   `mysqltestuser_SELECT_PageAble`( 
             _WhereClause   VARCHAR(2000),      --   查找条件 
             _OrderBy   VARCHAR(2000),      --   排序条件 
             _PageSize      INT   ,         --   每页记录数 
             _PageIndex   INT   ,      --   当前页码 
             _DoCount         BIT         --   标志:统计数据/输出数据 
 ) 
             NOT   DETERMINISTIC 
             SQL   SECURITY   DEFINER 
             COMMENT    ' ' 
 BEGIN 
 	   --   定义key字段临时表 
 	   DROP   TABLE   IF   EXISTS   _TempTable_KeyID;      --   删除临时表,如果存在 
 	   CREATE   TEMPORARY      TABLE      _TempTable_KeyID 
 	   ( 
 		userid   INT 
 	   )TYPE=HEAP;   
 	   --   构建动态的sql,输出关键字key的id集合 
 	   --   查找条件 
 	   SET   @sql   =    'SELECT      userid   FROM   mysqltestuser '; 
 	   IF   (_WhereClause   is   NOT   NULL)      AND   (_WhereClause    <>     ' ')   THEN 
 		   SET   @sql=   concat(@sql,    '   WHERE    '   ,_WhereClause); 
 	   END   if;   
 	   IF   (_OrderBy   is   NOT   NULL)      AND      (_OrderBy    <>  ' ')   THEN 
 		   SET   @sql=   concat(   @sql   ,    '   ORDER   BY    '   ,   _OrderBy); 
 	   END   IF;  	 
 	   --   准备id记录插入到临时表 
 	   set   @sql=concat( 'insert   into   _TempTable_KeyID(userid) ',   @sql); 
 	   PREPARE   stmt   FROM   @sql; 
 	   EXECUTE   stmt   ; 
 	   DEALLOCATE   PREPARE   stmt; 
 	--   key的id集合      [end]   
 --   下面是输出 
 IF   (_DoCount=1)   then      --   统计 
                BEGIN 
                               SELECT   COUNT(*)   AS   RecordCount   FROM   _TempTable_KeyID; 
                END; 
 ELSE                                                   --   输出记录集 
                BEGIN 
                            --   计算记录的起点位置 
 	   SET   @startPoint   =   ifnull((_PageIndex-1)*_PageSize,0); 
                            SET   @sql= '                        SELECT               A.* 
 			         FROM	         mysqltestuser   A 
 			         INNER   JOIN   _TempTable_KeyID   B 
 			         ON      A.userid   =B.userid &nb