mysql分页存储过程

 

  
  
  
  
  1. DROP PROCEDURE IF EXISTS UP_SplitPages;  
  2. CREATE  PROCEDURE UP_SplitPages(  
  3. nCurrPage int,/*当前页*/  
  4. nFieldName varchar(1000),/*显示字段*/  
  5. nTablename varchar(100),/*表名*/  
  6. nWhereStr varchar(1000),/*查询条件*/  
  7. nOrderStr varchar(1000),/*排序条件*/  
  8. nPageSize int/*每页条数*/  
  9. )  
  10. BEGIN 
  11.     DECLARE sBeginRow INT DEFAULT 0;/*行数*/  
  12.     DECLARE sLimit varchar(1000);  
  13.     IF nCurrPage<1 THEN 
  14.         set sBeginRow = 0;  
  15.     ELSE 
  16.          set sBeginRow = (nCurrPage-1)*nPageSize;  
  17.     END IF;  
  18.     set sLimit = CONCAT(' LIMIT ',sBeginRow,', ',nPageSize);/*limit串 */  
  19.     IF (nWhereStr is null OR nWhereStr=''THEN 
  20.       SET @sWhereStr = '' ;  
  21.     ELSE 
  22.       SET @sWhereStr =CONCAT(' WHERE ',nWhereStr);  
  23.     END IF;  
  24.  
  25.     IF (nOrderStr is null OR nOrderStr=''THEN 
  26.       SET @sOrderStr = '' ;  
  27.     ELSE 
  28.       SET @sOrderStr =concat(' ORDER BY ',nOrderStr);  
  29.     END IF;  
  30.  
  31.     SET @sql_data = CONCAT('SELECT ',nFieldName,' FROM ',nTablename,@sWhereStr,@sOrderStr,sLimit);  
  32.     /*SET @sql_count=CONCAT('SELECT COUNT(*) FROM ',nTablename,@sWhereStr);  
  33.  
  34.     PREPARE stmtCount FROM @sql_count;  
  35.     EXECUTE stmtCount;  
  36.     DEALLOCATE PREPARE stmtCount;*/  
  37.  
  38.     PREPARE stmtData FROM @sql_data;  
  39.     EXECUTE stmtData;  
  40.     DEALLOCATE PREPARE stmtData;  
  41. END

调用:call UP_SplitPages (2,'RID,GroupID,GroupName,GroupType,Description','Group','1=1 and GroupType<10','Group.GroupID','RID',4)

如果存储过程返回有两个结果集,php中不知道如何获取,我没试成功,哪位有好的方式能处理,请留言

你可能感兴趣的:(mysql,数据库,职场,休闲,存储分页)