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

本文共 2007 字,大约阅读时间需要 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://mgfsa.baihongyu.com/

你可能感兴趣的文章
alias命令详情
查看>>
iOS - UITouch
查看>>
学习C++语言的50条忠告
查看>>
mysql的innodb中事务日志ib_logfile
查看>>
大数乘法?
查看>>
C语言博客作业03--函数
查看>>
96. Unique Binary Search Trees(I 和 II)
查看>>
飘窗原生js效果
查看>>
自定义异步加载资源插件
查看>>
Mongodb windows 安装
查看>>
easyui combobox两种不同的数据加载方式
查看>>
报错:该页必须具有 <%@ webservice class="MyNamespace.MyClass" ... %> 指令。
查看>>
Smarty配置与实例化
查看>>
***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
查看>>
抽象方法和接口区别
查看>>
Siege——多线程编程最佳实例
查看>>
c# 生成 验证码
查看>>
Selenium学习(4) 键盘操作
查看>>
SQL Server 触发器
查看>>
神奇语言 python 初识面向对象
查看>>