急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
USE [#80Tao_HLSupermarket#]
GO
/****** Object: StoredProcedure [dbo].[SP_Help_SELECT_GetAllList] Script Date: 11/24/2011 09:48:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_Help_SELECT_GetAllList]
@categoryID varchar(20),--分类ID
@isURL int, --是否启用
@helpTitle varchar(200),--关键字
@pageSize int output, --分页大小
@pageTotal int output, --页总数
@pageCurrent int output, --当前页
@RecordTotal int output --记录总数
AS
declare @SQL varchar(800) --组合的SQL语句
declare @PageSQL nvarchar(800) --组合的SQL语句
declare @WHERE varchar(500)='' --组合WHERE条件
declare @TempRecordTotal varchar(300) --记录总数
BEGIN
--设置条件
if(@categoryID<>'' or @isURL<>-1 or @helpTitle<>'')
BEGIN
SET @WHERE = ' WHERE 1=1 '
if(@categoryID<>'') BEGIN SET @WHERE = @WHERE+' and categoryID like ''%,'+convert(varchar(5),@categoryID)+',%''' END
if(@isURL<>-1) BEGIN SET @WHERE = @WHERE+' and isURL=' + CONVERT(varchar(20),@isURL) END
if(@helpTitle<>'') BEGIN SET @WHERE = @WHERE+' and (helpTitle like ''%'+@helpTitle+'%'' )' END
END
--设置总记录数
SET @PageSQL ='SELECT @RecordTotal = count(helpTitle) from [Help]'+@WHERE
exec sp_executesql @PageSQL,N'@RecordTotal int output',@RecordTotal output
--设置页总数
IF @RecordTotal % @pageSize=0
BEGIN
SET @pageTotal = @RecordTotal/@pageSize
END
ELSE
BEGIN
SET @pageTotal = @RecordTotal/@pageSize+1
END
--设置当前页数
IF(@pageCurrent<1) BEGIN SET @pageCurrent = 1 END
IF(@pageCurrent>@pageTotal) BEGIN SET @pageCurrent = @pageTotal END
IF(@pageCurrent=1)
BEGIN
SET @SQL='SELECT TOP '+convert(varchar(5),@pageSize)+' ROW_NUMBER() OVER(ORDER BY categoryID asc,ID asc) RowNumber,* from [Help] '+@WHERE+' Order by categoryID asc,ID asc'
END
exec (@SQL)
END
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
------解决方案--------------------
SQL code
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_Help_SELECT_GetAllList]
(
@pageSize int, --分页大小
@pageCurrent int, --当前页
@Where NVARCHAR(2000)='',
@pageTotal int output, --页总数
@RecordTotal int OUTPUT --记录总数
)
AS
declare @SQL varchar(2000) --组合的SQL语句
declare @PageSQL nvarchar(2000) --组合的SQL语句
BEGIN
--设置总记录数
SET @PageSQL ='SELECT @RecordTotal = count(helpTitle) from [Help] where 1=1 '+@WHERE
exec sp_executesql @PageSQL,N'@RecordTotal int output',@RecordTotal output
--设置页总数
IF @RecordTotal % @pageSize=0
BEGIN
SET @pageTotal = @RecordTotal/@pageSize
END
ELSE
BEGIN
SET @pageTotal = @RecordTotal/@pageSize+1
END
--设置当前页数
IF(@pageCurrent<1)
BEGIN
SET @pageCurrent = 1
END
BEGIN
SET @SQL=
'SELECT ROW_NUMBER() OVER(ORDER BY categoryID asc,ID asc) RowNumber,*
from [Help]
where RowNumber between '+RTRIM((@pageCurrent-1)*@pageSize+1)+' and '+RTRIM(@pageCurrent*@pageSize)+'
'
END
exec (@SQL)
END
GO
--調用
DECLARE @pageTotal INT,@RecordTotal int
EXEC [SP_Help_SELECT_GetAllList]
@pageSize=20,
@pageCurrent=2,
@Where='',--有條件就在這里加 格式 ' and helpTitle like ''abd%'''
@pageTotal=@pageTotal OUTPUT,
@RecordTotal=@RecordTotal OUTPUT
SELECT @pageTotal,@RecordTotal