CREATE DEFINER = 'bluesoleil' @'localhost' PROCEDURE ` Prc_Paging ` (
IN TableName TEXT,
IN Fields TEXT,
IN PageSize INTEGER ( 11 ),
IN CurrentPage INTEGER ( 11 ),
IN WhereStr TEXT,
IN GroupCondition VARCHAR ( 255 ),
IN OrderCondition VARCHAR ( 255 ),
OUT Out_Count INTEGER ( 11 )
) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN
DECLARE m_begin_row INT DEFAULT 0;
DECLARE m_limit_string CHAR ( 64 ) DEFAULT "";
SET m_begin_row = ( CurrentPage - 1 ) * PageSize;
SET m_limit_string = CONCAT ( ' LIMIT ', m_begin_row, ', ', PageSize );
SET @theCount = 0;
SET @COUNT_STRING = CONCAT ( 'SELECT COUNT(*) INTO @theCount FROM ', TableName, ' ', WhereStr );
SET @MAIN_STRING = CONCAT ( 'SELECT ', Fields, ' FROM ', TableName, ' ', WhereStr, ' ', GroupCondition, ' order by ', OrderCondition, ' ', m_limit_string );
PREPARE count_stmt
FROM @COUNT_STRING;
EXECUTE count_stmt;
DEALLOCATE PREPARE count_stmt;
IF @theCount IS NULL
THEN
SET Out_Count = 0;
ELSE
SET Out_Count = @theCount;
END IF;
PREPARE main_stmt
FROM
@MAIN_STRING;
EXECUTE main_stmt;
DEALLOCATE PREPARE main_stmt;
END;
适用于单个表,视图,和多表组合查询.