博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql 2000 分页存储过程
阅读量:6984 次
发布时间:2019-06-27

本文共 2099 字,大约阅读时间需要 6 分钟。

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

你可能感兴趣的文章
计时器
查看>>
迎接“云”时代的全面到来
查看>>
论“性能需求分析”系列专题(一)之 性能需求剖析
查看>>
Effective 笔记
查看>>
Vim配置文件(全平台可用)2012-05-01版
查看>>
JPA概要
查看>>
PHP框架 Phalcon 1.0.0 beta发布,实测性能强劲
查看>>
程序集信息设置.net
查看>>
seajs 的研究二 -- 无题
查看>>
Leetcode: Unique Paths II
查看>>
SQL Server 跨库同步数据
查看>>
JCheckBox使用示例
查看>>
LaTeX使用listings宏包插入代码时,将代码字体设为 Monaco
查看>>
设计模式之迭代子模式
查看>>
代码评审的不可能三角
查看>>
揭秘ThreadLocal
查看>>
七年蜕变 感恩献礼
查看>>
共享经济、短视频、新零售、AI:寻觅2019年新经济未来走向
查看>>
zabbix配置邮箱报警
查看>>
使用ulimit设置文件最大打开数
查看>>