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

目录
相关文章
|
5月前
|
存储 SQL 数据库
sql serve存储过程
sql serve存储过程
|
5月前
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
47 1
|
23小时前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
5 0
|
2月前
|
SQL 关系型数据库 MySQL
SQL中如何实现分页?
【8月更文挑战第3天】SQL中如何实现分页?
80 36
|
2月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
30 1
|
2月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
82 0
|
2月前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
78 0
|
4月前
|
存储 SQL 数据库
SQL 语言:存储过程和触发器
SQL 语言:存储过程和触发器
61 6
|
4月前
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
|
4月前
|
存储 SQL Oracle
oracle 存储过程导出sql语句 导出为文件
oracle 存储过程导出sql语句 导出为文件
166 0