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 


版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/archive/2009/08/13/1545028.html

目录
相关文章
|
4月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
348 11
|
4月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
107 9
|
11月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
249 1
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
123 1
|
10月前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
11月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
421 1
|
11月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
189 3
|
11月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
594 1
|
11月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
147 3
|
SQL 关系型数据库 MySQL
SQL中如何实现分页?
【8月更文挑战第3天】SQL中如何实现分页?
382 36