当前位置: 代码迷 >> Sql Server >> 急求谁能帮小弟我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
  详细解决方案

急求谁能帮小弟我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))

热度:33   发布时间:2016-04-27 18:04:24.0
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
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 [email protected]+'%'' )' END
END

--设置总记录数
SET @PageSQL ='SELECT @RecordTotal = count(helpTitle) from [Help][email protected]
exec sp_executesql @PageSQL,[email protected] int output',@RecordTotal output

--设置页总数
IF @RecordTotal % @pageSize=0
BEGIN 
SET @pageTotal = @[email protected] 
END 
ELSE 
BEGIN 
SET @pageTotal = @[email protected]+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] [email protected]+' Order by categoryID asc,ID asc'
END
exec (@SQL)

END


急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))
急急急~求哪位高手能帮我把这段存储过程修改成可用的、完整的存储过程(要求功能有分页和条件查询))

------解决方案--------------------
SQL code
SET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[SP_Help_SELECT_GetAllList](    @pageSize int, --分页大小    @pageCurrent int, --当前页    @Where NVARCHAR(2000)='',    @pageTotal int output, --页总数    @RecordTotal int OUTPUT --记录总数)ASdeclare @SQL varchar(2000) --组合的SQL语句declare @PageSQL nvarchar(2000) --组合的SQL语句BEGIN--设置总记录数SET @PageSQL ='SELECT @RecordTotal = count(helpTitle) from [Help] where 1=1 [email protected]exec sp_executesql @PageSQL,[email protected] int output',@RecordTotal output--设置页总数IF @RecordTotal % @pageSize=0    BEGIN         SET @pageTotal = @[email protected]     END ELSE     BEGIN         SET @pageTotal = @[email protected]+1     END--设置当前页数IF(@pageCurrent<1)     BEGIN         SET @pageCurrent = 1    ENDBEGINSET @SQL='SELECT ROW_NUMBER() OVER(ORDER BY categoryID asc,ID asc) RowNumber,* from [Help] where RowNumber between '+RTRIM((@pageCurrent-1)[email protected]+1)+' and '+RTRIM(@[email protected])+''ENDexec (@SQL)ENDGO--調用DECLARE @pageTotal INT,@RecordTotal intEXEC [SP_Help_SELECT_GetAllList] @pageSize=20,@pageCurrent=2,@Where='',--有條件就在這里加 格式 ' and helpTitle  like ''abd%'''@[email protected] OUTPUT,@[email protected] OUTPUTSELECT @pageTotal,@RecordTotal
  相关解决方案