62,267
社区成员
发帖
与我相关
我的任务
分享set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [SCE].[Test]
(@startIndex INT=null, @endindex INT=null,@docount bit=null,@ShiftId int=null,@TeamId int=null,@Dt datetime=null)
AS
set nocount on
if(@docount=1)
BEGIN
DECLARE @sql varchar(4000)
SET @sql='select count(sm.Id) from sce.MaterailBack sm WHERE 1=1'
IF (@ShiftId!=NULL) SET @sql=@sql+' AND sm.ShiftId=@ShiftId'
IF(@TeamId!=NULL) SET @sql=@sql+' AND sm.TeamId=@TeamId'
IF (@Dt!=NULL) SET @sql=@sql+' AND sm.Dt=@Dt'
EXEC (@sql)
END
ELSE
BEGIN
DECLARE @sql2 varchar(4000)
SET @sql2='SELECT ROW_NUMBER() OVER (ORDER BY sm.Id DESC)AS Row, sm.*,ps.NM shiftNM,pu.NM unitNM,puser.NM userNM from sce.MaterailBack sm Where 1=1'
IF (@ShiftId!=NULL) SET @sql2=@sql2+'AND sm.ShiftId=@ShiftId'
IF(@TeamId!=NULL) SET @sql2=@sql2+'AND sm.TeamId=@TeamId'
IF (@Dt!=NULL) SET @sql2=@sql2+'AND sm.Dt=@Dt'
EXEC (@sql2)
WITH tbTemp AS
(
--这个地方由于With的限制
--不能执行Exec(Sql2)
)
SELECT *
FROM tbTemp
WHERE Row between @startIndex and @endIndex --分页查询
END
set nocount OFF