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)
ストレージ・プロシージャが2つの結果セットを返す場合、phpではどのように取得するか分かりません.私は成功しませんでした.どなたが処理できるか、伝言を残してください.