SQL Server 2005通用分页代码
2007-08-14 09:59
288 查看
--通用的SQL Server 2005 分页程序,由该存储过程自动生成。
生成存储过程注意:
该分页存储过程需要传递表名。
尽量为该表建立主键。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE PROC #AutoGeneration_Query_P
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@TABLENAME VARCHAR(50)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
AS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @HOST_NAME VARCHAR(200)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @GET_DATE DATETIME
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @SQLROC VARCHAR(8000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @DESCRIPTION VARCHAR(4000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SELECT @SQLROC='',@DESCRIPTION='',
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@HOST_NAME=HOST_NAME(),@GET_DATE=GETDATE()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_Query'') AND XTYPE IN (N''P''))'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_Query'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+'GO '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_Query'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 功能说明:根据条件获取表'+@TABLENAME+'的记录的分页存储过程'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 入口参数:@SearchCondition:搜索条件, @OrderList:分页排序方式'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| @PageSize:页大小, @PageIndex:当前页'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 过程返回:返回记录数'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_Query '''','''',20,10'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 联系方式:Spark.Zou@hotmail.com'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SELECT @SQLROC=@SQLROC+CHAR(10)+@DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_Query'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@SearchCondition'+SPACE(20-LEN('@SearchCondition'))+'VARCHAR(2000), --查询条件'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@OrderList'+SPACE(20-LEN('@OrderList'))+'VARCHAR(1000), --排序列表'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageSize'+SPACE(20-LEN('@PageSize'))+'INT=10, --每页的大小'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageIndex'+SPACE(20-LEN('@PageIndex'))+'INT --要显示的页码'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+'AS'+CHAR(10)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @SQL VARCHAR(200)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @KEYCOLUMNS VARCHAR(200)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @DBNAME VARCHAR(20)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SELECT @SQL='''',@KEYCOLUMNS='''',@DBNAME=DB_NAME() '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')<>'''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@OrderList+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')='''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT @KEYCOLUMNS=@KEYCOLUMNS+'',''+A.NAME'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' FROM SYSCOLUMNS A INNER JOIN SYSTYPES B'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ON A.XUSERTYPE=B.XUSERTYPE AND ID=OBJECT_ID('''+@TABLENAME+''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND EXISTS(SELECT 1 FROM SYSOBJECTS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE XTYPE=''PK'' AND PARENT_OBJ=A.ID AND NAME IN ('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT NAME FROM SYSINDEXES '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE INDID IN('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT INDID FROM SYSINDEXKEYS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ID = A.ID AND COLID=A.COLID'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @KEYCOLUMNS=STUFF(@KEYCOLUMNS,1,1,'''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' IF ISNULL(@KEYCOLUMNS,'''')='''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' raiserror(''SQL Server 2005 中需要提供排序字段,默认为表的主键字段'',16,1,@DBNAME)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' RETURN '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@KEYCOLUMNS+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')='''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT @KEYCOLUMNS=@KEYCOLUMNS+'',''+A.NAME'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' FROM SYSCOLUMNS A INNER JOIN SYSTYPES B'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ON A.XUSERTYPE=B.XUSERTYPE AND ID=OBJECT_ID('''+@TABLENAME+''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND EXISTS(SELECT 1 FROM SYSOBJECTS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE XTYPE=''PK'' AND PARENT_OBJ=A.ID AND NAME IN ('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT NAME FROM SYSINDEXES '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE INDID IN('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT INDID FROM SYSINDEXKEYS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ID = A.ID AND COLID=A.COLID'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @KEYCOLUMNS=STUFF(@KEYCOLUMNS,1,1,'''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' IF ISNULL(@KEYCOLUMNS,'''')='''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' raiserror(''SQL Server 2005 中需要提供排序字段,默认为表的主键字段'',16,1,@DBNAME)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' RETURN '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@KEYCOLUMNS+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND @SearchCondition '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')<>'''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@OrderList+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' AND @SearchCondition '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'EXEC(@SQL)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT OFF'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
PRINT @SQLROC+CHAR(10)+'GO '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
GO
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE PROC #SP_Generation_Query
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@TABLENAMES VARCHAR(8000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
AS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @I INT
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @TABLENAME VARCHAR(100)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @I=CHARINDEX(',',@TABLENAMES)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
WHILE @I>0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @TABLENAME=LEFT(@TABLENAMES,@I-1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
EXEC #AutoGeneration_Query_P @TABLENAME
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @TABLENAMES=RIGHT(@TABLENAMES,LEN(@TABLENAMES)-@I)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @I=CHARINDEX(',',@TABLENAMES)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IF LEN(@TABLENAMES)>0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
EXEC #AutoGeneration_Query_P @TABLENAMES
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
GO
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#SP_Generation_Query 'tb_human_plan2'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
drop proc #SP_Generation_Query
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
drop proc #AutoGeneration_Query_P
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
--使用生成的存储过程注意:
尽量为分页传递排序条件
如果没有为分页传递排序条件、系统自动去搜索表的主键,默认以表的主键升序为分页条件。由于搜索表的主键消耗资源比较大,所以效率很降低。
生成存储过程注意:
该分页存储过程需要传递表名。
尽量为该表建立主键。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE PROC #AutoGeneration_Query_P
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@TABLENAME VARCHAR(50)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
AS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @HOST_NAME VARCHAR(200)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @GET_DATE DATETIME
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @SQLROC VARCHAR(8000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @DESCRIPTION VARCHAR(4000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SELECT @SQLROC='',@DESCRIPTION='',
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@HOST_NAME=HOST_NAME(),@GET_DATE=GETDATE()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_Query'') AND XTYPE IN (N''P''))'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_Query'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+'GO '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_Query'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 功能说明:根据条件获取表'+@TABLENAME+'的记录的分页存储过程'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 入口参数:@SearchCondition:搜索条件, @OrderList:分页排序方式'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| @PageSize:页大小, @PageIndex:当前页'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 过程返回:返回记录数'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_Query '''','''',20,10'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 联系方式:Spark.Zou@hotmail.com'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @DESCRIPTION=@DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SELECT @SQLROC=@SQLROC+CHAR(10)+@DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_Query'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@SearchCondition'+SPACE(20-LEN('@SearchCondition'))+'VARCHAR(2000), --查询条件'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@OrderList'+SPACE(20-LEN('@OrderList'))+'VARCHAR(1000), --排序列表'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageSize'+SPACE(20-LEN('@PageSize'))+'INT=10, --每页的大小'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageIndex'+SPACE(20-LEN('@PageIndex'))+'INT --要显示的页码'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+'AS'+CHAR(10)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @SQL VARCHAR(200)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @KEYCOLUMNS VARCHAR(200)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'DECLARE @DBNAME VARCHAR(20)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SELECT @SQL='''',@KEYCOLUMNS='''',@DBNAME=DB_NAME() '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')<>'''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@OrderList+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')='''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT @KEYCOLUMNS=@KEYCOLUMNS+'',''+A.NAME'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' FROM SYSCOLUMNS A INNER JOIN SYSTYPES B'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ON A.XUSERTYPE=B.XUSERTYPE AND ID=OBJECT_ID('''+@TABLENAME+''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND EXISTS(SELECT 1 FROM SYSOBJECTS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE XTYPE=''PK'' AND PARENT_OBJ=A.ID AND NAME IN ('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT NAME FROM SYSINDEXES '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE INDID IN('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT INDID FROM SYSINDEXKEYS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ID = A.ID AND COLID=A.COLID'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @KEYCOLUMNS=STUFF(@KEYCOLUMNS,1,1,'''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' IF ISNULL(@KEYCOLUMNS,'''')='''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' raiserror(''SQL Server 2005 中需要提供排序字段,默认为表的主键字段'',16,1,@DBNAME)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' RETURN '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@KEYCOLUMNS+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')='''''
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT @KEYCOLUMNS=@KEYCOLUMNS+'',''+A.NAME'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' FROM SYSCOLUMNS A INNER JOIN SYSTYPES B'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ON A.XUSERTYPE=B.XUSERTYPE AND ID=OBJECT_ID('''+@TABLENAME+''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND EXISTS(SELECT 1 FROM SYSOBJECTS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE XTYPE=''PK'' AND PARENT_OBJ=A.ID AND NAME IN ('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT NAME FROM SYSINDEXES '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE INDID IN('
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT INDID FROM SYSINDEXKEYS '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ID = A.ID AND COLID=A.COLID'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' )'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @KEYCOLUMNS=STUFF(@KEYCOLUMNS,1,1,'''')'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' IF ISNULL(@KEYCOLUMNS,'''')='''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' raiserror(''SQL Server 2005 中需要提供排序字段,默认为表的主键字段'',16,1,@DBNAME)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' RETURN '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@KEYCOLUMNS+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' AND @SearchCondition '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')<>'''' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SET @SQL=''SELECT * FROM ( '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' SELECT ROW_NUMBER()OVER(ORDER BY ''+@OrderList+'' ) AS ROWID,* FROM '+@TABLENAME+' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' ) AS MYTABLE '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' WHERE ROWID BETWEEN ''+LTRIM(@PageSize)+''*(''+LTRIM(@PageIndex)+''-1)+1 and ''+LTRIM(@PageSize)+''*''+LTRIM(@PageIndex)+'' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+' AND @SearchCondition '' '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'EXEC(@SQL)'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT OFF'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @SQLROC=@SQLROC+CHAR(10)+'END'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
PRINT @SQLROC+CHAR(10)+'GO '
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
GO
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CREATE PROC #SP_Generation_Query
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
@TABLENAMES VARCHAR(8000)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
AS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @I INT
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DECLARE @TABLENAME VARCHAR(100)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @I=CHARINDEX(',',@TABLENAMES)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
WHILE @I>0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @TABLENAME=LEFT(@TABLENAMES,@I-1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
EXEC #AutoGeneration_Query_P @TABLENAME
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @TABLENAMES=RIGHT(@TABLENAMES,LEN(@TABLENAMES)-@I)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SET @I=CHARINDEX(',',@TABLENAMES)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
IF LEN(@TABLENAMES)>0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BEGIN
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
EXEC #AutoGeneration_Query_P @TABLENAMES
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
END
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
GO
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#SP_Generation_Query 'tb_human_plan2'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
drop proc #SP_Generation_Query
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
drop proc #AutoGeneration_Query_P
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
--使用生成的存储过程注意:
尽量为分页传递排序条件
如果没有为分页传递排序条件、系统自动去搜索表的主键,默认以表的主键升序为分页条件。由于搜索表的主键消耗资源比较大,所以效率很降低。
相关文章推荐
- SQL Server 2005通用分页代码
- SQL Server 2000和2005通用分页存储过程
- SQL Server 2005通用分页存储过程及多表联接应用
- SQL SERVER 2005 通用高效分页存储过程
- SQL Server 2005的通用分页存储过程
- Sql Server 2005 row_number()分页性能测试
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- SQL SERVER 2005 CTE(通用表达式)
- SQL Server 的通用分页显示存储过程(zz)
- Hibernate 调用SQL Server 2005 分页存储过程
- SQL Server 2000下的通用分页存储过程,感觉比较实用就发出来了
- Sql Server 2005 ROW_NUMBER 函数实现分页
- SQL Server 2005 中行号的显示,分页
- ASP.NET 2.0在SQL Server 2005上自定义分页
- SQL Server的通用分页存储过程 未使用游标,速度更快!
- 一个通用的Java分页基类代码详解
- Sql Server 2005 ROW_NUMBER 函数实现分页
- 利用Sql Server的top分页查询的通用构造方式
- .net与sql server 2005 几种常见连接代码