SQL存储过程中分页

</pre><pre name="code" class="sql">ALTER proc [dbo].[GetGoodsLsit]
----分页条件
@StartIndex  varchar(20),
@PageSize    varchar(20),
----排序条件
@SortExpression varchar(50),    --排序字段
@Direction  varchar(10),		--排序方式
@Seltype varchar(100),--查询类别
@Selstr varchar(500)--查询内容
as
begin
 	declare @SQL varchar(6000)
	      
			if @SortExpression <> '' and @Direction <> ''--排序字段
	        BEGIN
			set @SQL='select Row_Number() over (order by  '+@SortExpression+' '+@Direction+') as row, '
			end
		    else
		    BEGIN
	          set @SQL=' select Row_Number() over (order by gl.GoodsId  desc ) as row, '
	        END
  	    set @SQL= @SQL+'   gl.*,PositionsName,PositionsID
					from V_GoodsList gl 
					left join G_Cfg_PositionsList pl on pl.GoodsID=gl.GoodsID where gl.bBlockUp=0'
                --查询条件
                if @Seltype<>''
		begin
		   if @Seltype='GoodsNo'
		   begin
		      set @SQL=@SQL+' and GoodsNo='''+@Selstr+''''
		   end
		   if @Seltype='GoodsName'
		   begin
		      set @SQL=@SQL+' and GoodsName like ''%'+@Selstr+'%'''
		   end
		end

		set @SQL = '  With orderlist as ('+ @SQL +')' 
		if @SortExpression<> '' and @Direction<>''--排序字段
		set @SQL=@SQL+' select *,(select count(*) from orderlist )as count from orderlist where row between (convert(int,'+@StartIndex+')-1)* convert(int,'+@PageSize+')+1 and  (convert(int,'+@StartIndex+') * convert(int,'+@PageSize+') )  order by  '+@SortExpression+' '+@Direction+''
		else
   		set @SQL=@SQL+' select *,(select count(*) from orderlist )as count from orderlist where row between (convert(int,'+@StartIndex+')-1)* convert(int,'+@PageSize+')+1 and  (convert(int,'+@StartIndex+') * convert(int,'+@PageSize+') ); '
        set @SQL=@SQL+' select   * from G_Goods_GoodsSpec where bBlockup=0 ;'
		print @SQL
	    exec(@SQL)

    
end 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值