sql 2000 分页存储过程


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- [SelectBase] 1,1,'( select j.*,u.P_Name from Job j left join Users u on j.UserID=u.ID) T','Flag=0'
            alter procedure [SelectBase]
            @PageIndex               int, 
            @PageSize               int, 
            @TableName    nvarchar(2000), 
            @Where        nvarchar(2000)='' 
            as 
            Declare @rowcount          int 
            Declare @intStart          int 
            Declare @intEnd         int 
            declare @Column1 varchar(32) --第一列名称
            Declare @SQl nvarchar(2000), @WhereR nvarchar(1000), @OrderBy nvarchar(1000) 
            set @rowcount=0 
            set nocount on 
            if @Where<>'' 
            begin 
            set @Where=' and '+@Where 
            end 
            if CHARINDEX('order by', @Where)>0 
            begin 
            set @WhereR=substring(@Where, 1, CHARINDEX('order by',@Where)-1)    --取得条件 
            set @OrderBy=substring(@Where, CHARINDEX('order by',@Where), Len(@Where))    --取得排序方式(order by 字段 方式) 
            end 
            else 
            begin 
            set @WhereR=@Where 
            set @OrderBy=' order by id asc' 
            end 
            set @SQl='SELECT @rowcount=count(*) from '+cast(@TableName as nvarchar(2000))+' where 1=1 '+@WhereR 
            
            exec sp_executeSql @SQl,N'@rowcount int output',@rowcount output 
            if @PageIndex=0 and @PageSize=0    --不进行分页,查询所有数据列表 
            begin 
            set @SQl='SELECT * from '+cast(@TableName as nvarchar(2000))+' where 1=1 '+@Where 
            end 
            else    --进行分页查询数据列表 
            begin 
            set @intStart=(@PageIndex-1)*@PageSize+1; 
            set @intEnd=@intStart+@PageSize-1 
            declare @PKName nvarchar(50)
            if(len(@TableName)>50)
            begin
                Set @Column1='ID'
            end
            else
            begin
            set @Column1=col_name(object_id(@tableName),1) --设置第一列名称
            end
            set @SQl='Create table #tem(Row int identity(1,1) not null,joinRow int) '  
            set @SQl=@SQl+'insert #tem(joinRow) select '+@Column1+' from '+@TableName +' where 1=1 '+@WhereR 
            set @SQl=@SQl+' select * from '+@TableName+' right join #tem  on '+@Column1+'=#tem.joinRow '  
            set @SQl=@SQl+' where #tem.Row between '+cast(@intStart as varchar)+' and '+cast(@intEnd as varchar) 
            end 
            --PRINT @SQl
            exec sp_executeSql @SQl 
            return @rowcount 
            set nocount off 

时间: 2024-11-03 01:30:23

sql 2000 分页存储过程的相关文章

sql server 2005分页存储过程和sql server 2000分页存储过程

 sql server 2005分页存储过程和sql server 2000分页存储过程,sql 2005的分页存储过程分3个版本,一个是没有优化过的,一个是优化过的,最后一个支持jion的,sql2000的分页存储过程,也可以运行在sql2005上,但是性能没有sql2005的版本好. USE [svnhost] GO /****** 对象:  StoredProcedure [dbo].[up_Page2005]    脚本日期: 05/21/2008 11:27:05 ******/ SE

简单谈基于SQL SERVER 分页存储过程的演进

server|存储过程|分页 简单谈基于SQL SERVER 分页存储过程的演进 作者:郑佐日期:2006-9-30 针对数据库数据在UI界面上的分页是老生常谈的问题了,网上很容易找到各种"通用存储过程"代码,而且有些还定制查询条件,看上去使用很方便.笔者打算通过本文也来简单谈一下基于SQL SERVER 2000的分页存储过程,同时谈谈SQL SERVER 2005下分页存储过程的演进. 在进行基于UI显示的数据分页时,常见的数据提取方式主要有两种.第一种是从数据库提取所有数据然后在

浅谈基于SQL Server分页存储过程五种方法及性能比较

在SQL Server数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览. 创建数据库data_Test : create database data_Test GO use data_Test GO create table tb_TestTable --创建表 ( id int identity(1,1) primary key, userName nvarchar(20) not null, userPWD nvarchar(20) not null, u

五种SQL Server分页存储过程的方法及性能比较_MsSql

在SQL Server数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览.本文我们总结了五种SQL Server分页存储过程的方法,并对其性能进行了比较,接下来就让我们来一起了解一下这一过程. 创建数据库data_Test : create database data_Test GO use data_Test GO create table tb_TestTable --创建表 ( id int identity(1,1) primary key, userN

五种SQL Server分页存储过程的方法及性能比较

在SQL Server数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览.本文我们总结了五种SQL Server分页存储过程的方法,并对其性能进行了比较,接下来就让我们来一起了解一下这一过程. 创建数据库data_Test : create database data_Test GO use data_Test GO create table tb_TestTable --创建表 ( id int identity(1,1) primary key, userN

简析基于SQL SERVER分页存储过程的演进

针对数据库数据在UI界面上的分页是老生常谈的问题了,网上很容易找到各种"通用存储过程"代码,而且有些还定制查询条件,看上去使用很方便.笔者打算通过本文也来简单谈一下基于SQL SERVER 2000的分页存储过程,同时谈谈SQL SERVER 2005下分页存储过程的演进. 在进行基于UI显示的数据分页时,常见的数据提取方式主要有两种.第一种是从数据库提取所有数据然后在系统应用程序层进行数据分页,显示当前页数据.第二种分页方式为从数据库取出需要显示的一页数据显示在UI界面上. 以下是笔

Sql Server 分页存储过程

分页存储过程一: --/*-----存储过程 分页处理 孙伟 2005-03-28创建 -------*/ --/*----- 对数据进行了2分处理使查询前半部分数据与查询后半部分数据性能相同 -------*/ --/*-----存储过程 分页处理 孙伟 2005-04-21修改 添加Distinct查询功能-------*/ --/*-----存储过程 分页处理 孙伟 2005-05-18修改 多字段排序规则问题-------*/ --/*-----存储过程 分页处理 孙伟 2005-06-

sql server分页存储过程三种实例

例1.用于通用数据分页  代码如下 复制代码 create procedure [dbo].[Pub_DataPager]     @pTableName nvarchar(1000), --表名     @pFieldNames nvarchar(max),--需要查询的字符串,以 ","分割,也可以是'*'     @pWhere nvarchar(max),  --查询条件     @pOrderby nvarchar(max),        --排序字符串,必需字段    

sql 2005 分页存储过程

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo -- [SelectBase] 1,1,'Users','username=''test'''ALTER procedure [dbo].[SelectBase]@PageIndex                    int,@PageSize                    int,@TableName       nvarchar(max),@Where