mysqlページング・ストレージ・プロシージャ
6003 ワード
- DROP PROCEDURE IF EXISTS UP_SplitPages;
- CREATE PROCEDURE UP_SplitPages(
- nCurrPage int,/* */
- nFieldName varchar(1000),/* */
- nTablename varchar(100),/* */
- nWhereStr varchar(1000),/* */
- nOrderStr varchar(1000),/* */
- nPageSize int/* */
- )
- BEGIN
- DECLARE sBeginRow INT DEFAULT 0;/* */
- DECLARE sLimit varchar(1000);
- IF nCurrPage<1 THEN
- set sBeginRow = 0;
- ELSE
- set sBeginRow = (nCurrPage-1)*nPageSize;
- END IF;
- set sLimit = CONCAT(' LIMIT ',sBeginRow,', ',nPageSize);/*limit */
- IF (nWhereStr is null OR nWhereStr='') THEN
- SET @sWhereStr = '' ;
- ELSE
- SET @sWhereStr =CONCAT(' WHERE ',nWhereStr);
- END IF;
-
- IF (nOrderStr is null OR nOrderStr='') THEN
- SET @sOrderStr = '' ;
- ELSE
- SET @sOrderStr =concat(' ORDER BY ',nOrderStr);
- END IF;
-
- SET @sql_data = CONCAT('SELECT ',nFieldName,' FROM ',nTablename,@sWhereStr,@sOrderStr,sLimit);
- /*SET @sql_count=CONCAT('SELECT COUNT(*) FROM ',nTablename,@sWhereStr);
-
- PREPARE stmtCount FROM @sql_count;
- EXECUTE stmtCount;
- DEALLOCATE PREPARE stmtCount;*/
-
- PREPARE stmtData FROM @sql_data;
- EXECUTE stmtData;
- DEALLOCATE PREPARE stmtData;
- END;
呼び出し:call UP_SplitPages (2,'RID,GroupID,GroupName,GroupType,Description','Group','1=1 and GroupType<10','Group.GroupID','RID',4)
ストレージ・プロシージャが2つの結果セットを返す場合、phpではどのように取得するか分かりません.私は成功しませんでした.どなたが処理できるか、伝言を残してください.