Dv_GetRecordFromPage

CREATE PROCEDURE [dbo].[Dv_GetRecordFromPage]

	@tableName   nvarchar(100),-- 表名
	@fldSort nvarchar(100) = 'dateandtime',-- 排序字段
	@pageSize int = 30,-- 每页大小 
	@page  int = 1 ,-- 第几页
	@Sort  bit = 1,-- 排序,@Sort=0  升序@Sort=1  降序
	@ConditionStr nvarchar(1000),--查询条件
	@fldName  nvarchar(2000) = '*'--查询字段
	AS
	Declare @strTmp nvarchar(4000)
	Declare @sqlSort nvarchar(20)
	Declare @Compare varchar(1)
	Declare @Compare1 nvarchar(20)
	Declare @intCounts int
	DECLARE @var_Splitvalue varchar(5000)
	DECLARE @nRet int

	If @Sort=1
		Begin
		Set @sqlSort ='DESC'
		Set @Compare = '<'
		Set @Compare1='Min'
		End
	Else
		Begin
		Set @sqlSort ='ASC'
		Set @Compare = '>'
		Set @Compare1='Max'
	End
	If @page >1
		begin

			SELECT @intCounts=(@Page-1) * @pagesize

			SET @strTmp='SELECT @var_Splitvalue ='+@Compare1+'(' + @fldSort + ') FROM (Select Top '+CAST(@intCounts as nvarchar)+' ' + @fldSort + ' From '+@tableName+'  where '+@ConditionStr+' order BY ' + @fldSort + ' ' + @sqlSort+') as t'

			EXEC sp_executesql @strTmp,N'@var_Splitvalue varchar(5000) output',@var_Splitvalue output

			SET ROWCOUNT @pagesize

			SET @strTmp='SELECT '+ @fldName +' FROM '+@tableName+' where '+ @ConditionStr +' AND ' + @fldSort+ @Compare + ' @2 '+' '+' ORDER BY ' + @fldSort + ' ' + @sqlSort

			EXEC sp_executesql @strTmp,N'@2 varchar(5000)',@2=@var_Splitvalue

		End
	Else
		begin
			SET ROWCOUNT @pagesize

			SET @strTmp='SELECT '+ @fldName +' FROM '+@tableName+'  where ' +@ConditionStr+' ORDER BY ' + @fldSort + ' ' + @sqlSort

			EXEC sp_executesql @strTmp
		end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值