您的位置:首页 > 编程语言 > ASP

sql分页存储过程!与asp.net分页控件一起使用

2007-07-18 10:18 1001 查看






/**/
/*



很强的分页存储过程,速度超快!



exec Paging_RowCount 1338,5,



'TItemMater inner join TItem on TItemMater.FItemID=TItem.FItemID ',



'TItemMater.FNumber',



'TItemMater.FItemID,TItemMater.Fnumber,TItemMater.FnameC,TItemMater.FnameE,TItemMater.FLevel,TItemMater.FLong,TItemMater.Fwidth,TItemMater.Fheight,TItemMater.Fmodel,(select FNameC from Titem where FItemID=TItemMater.FUnitID) as FUnitID,TItemMater.FAcr,TItemMater.Fcub,TItemMater.FTpPs,TItemMater.Fweight,TItemMater.FJsPrice,TItemMater.FCbPrice,TItemMater.FSd,TItemMater.Flow,TItemMater.Fhigh,TItemMater.Fsafe,TItemMater.Fhour,TItemMater.FNote,TItemMater.F_1,TItem.FUnused ',



'Titem.FDeleted=0 and Titem.FUnused=0',



''







drop Proc Paging_RowCount



*/



CREATE

PROCEDURE
Paging_RowCount



(



@PageNumber

int

=

1
,



@PageSize

int

=

10
,



@Tables

varchar
(
1000
),



@Sort

varchar
(
200
)
=

NULL
,



@Fields

varchar
(
1000
)
=

'
*
'
,



@Filter

varchar
(
1000
)
=

NULL
,



@Group

varchar
(
1000
)
=

NULL



)



AS





DECLARE

@SortTable

varchar
(
100
)



DECLARE

@SortName

varchar
(
100
)



DECLARE

@strSortColumn

varchar
(
200
)



DECLARE

@operator

char
(
2
)



DECLARE

@type

varchar
(
100
)



DECLARE

@prec

int







/**/
/*
Set sorting variables.
*/



IF

CHARINDEX
(
'
DESC
'
,
@Sort
)
>
0



BEGIN



SET

@strSortColumn

=

REPLACE
(
@Sort
,
'
DESC
'
,
''
)



SET

@operator

=

'
<=
'



END



ELSE



BEGIN



IF

CHARINDEX
(
'
ASC
'
,
@Sort
)
=

0



SET

@strSortColumn

=

REPLACE
(
@Sort
,
'
ASC
'
,
''
)



SET

@operator

=

'
>=
'



END







IF

CHARINDEX
(
'
.
'
,
@strSortColumn
)
>

0



BEGIN



SET

@SortTable

=

SUBSTRING
(
@strSortColumn
,
0
,
CHARINDEX
(
'
.
'
,
@strSortColumn
))



SET

@SortName

=

SUBSTRING
(
@strSortColumn
,
CHARINDEX
(
'
.
'
,
@strSortColumn
)
+

1
,
LEN
(
@strSortColumn
))



END



ELSE



BEGIN



SET

@SortTable

=

@Tables



SET

@SortName

=

@strSortColumn



END





SELECT

@type
=
t.name,
@prec
=
c.prec



FROM
sysobjects o



JOIN
syscolumns c
on
o.id
=
c.id



JOIN
systypes t
on
c.xusertype
=
t.xusertype



WHERE
o.name
=

@SortTable

AND
c.name
=

@SortName





IF

CHARINDEX
(
'
char
'
,
@type
)
>

0



SET

@type

=

@type

+

'
(
'

+

CAST
(
@prec

AS

varchar
)
+

'
)
'





DECLARE

@strPageSize

varchar
(
50
)



DECLARE

@strStartRow

varchar
(
50
)



DECLARE

@strFilter

varchar
(
1000
)



DECLARE

@strSimpleFilter

varchar
(
1000
)



DECLARE

@strGroup

varchar
(
1000
)







/**/
/*
Default Page Number
*/



IF

@PageNumber

<

1



SET

@PageNumber

=

1







/**/
/*
Set paging variables.
*/



SET

@strPageSize

=

CAST
(
@PageSize

AS

varchar
(
50
))



SET

@strStartRow

=

CAST
(((
@PageNumber

-

1
)
*
@PageSize

+

1
)
AS

varchar
(
50
))







/**/
/*
Set filter & group variables.
*/



IF

@Filter

IS

NOT

NULL

AND

@Filter

!=

''



BEGIN



SET

@strFilter

=

'
WHERE
'

+

@Filter

+

'

'



SET

@strSimpleFilter

=

'
AND
'

+

@Filter

+

'

'



END



ELSE



BEGIN



SET

@strSimpleFilter

=

''



SET

@strFilter

=

''



END



IF

@Group

IS

NOT

NULL

AND

@Group

!=

''



SET

@strGroup

=

'
GROUP BY
'

+

@Group

+

'

'



ELSE



SET

@strGroup

=

''







/**/
/*
Execute dynamic query
*/





EXEC
(



'



DECLARE @SortColumn
'

+

@type

+

'



SET ROWCOUNT
'

+

@strStartRow

+

'



SELECT @SortColumn=
'

+

@strSortColumn

+

'
FROM
'

+

@Tables

+

@strFilter

+

'

'

+



@strGroup

+

'
ORDER BY
'

+

@Sort

+

'



SET ROWCOUNT
'

+

@strPageSize

+

'



SELECT
'

+

@Fields

+

'
FROM
'

+

@Tables

+

'
WHERE
'

+

@strSortColumn

+

@operator

+



'
@SortColumn
'

+

@strSimpleFilter

+

'

'

+

@strGroup

+

'
ORDER BY
'

+

@Sort

+

'



--select count(*) as RecordCount,case when(count(*)%
'
+
@PageSize
+
'
>0) then count(*)/
'
+
@PageSize
+
'
+1 else count(*)/
'
+
@PageSize
+
'
end as PageCount FROM
'

+

@Tables

+

@strFilter
+
'



'





)









GO







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: