Createproc getWorkPlan2 (@intCounterint ,@lngUserIDint) as selectTop5 lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where lngExecHumanID=@lngUserID orderby lngWorkID desc
现在想将这里的Top 5 改为变量· Top @intCounter 如下
ALTERproc getWorkPlan2 (@intCounterint ,@lngUserIDint) as ) execsp_executesql('select Top '+convert(varchar(10),@intCounter)+' lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where lngExecHumanID= ' +convert(varchar(10),@lngUserID) +' order by lngWorkID desc '
老是提示 在关键字 'convert' 附近有语法错误。
于是改为
ALTERproc getWorkPlan2 (@intCounterint ,@lngUserIDint) as declare@strCountervarchar(10) set@strCounter=convert(varchar(10),@intCounter) declare@strUserIDvarchar(10) set@strUserID=convert(varchar(10),@lngUserID) ) execsp_executesql('select Top '+@strCounter+' lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where lngExecHumanID= ' +@strUserID+' order by lngWorkID desc ' )
楼主以上的问题我也遇到过,不过我试了 Convert不行,但是CASE可以的。
下面是我的代码片段:
set @sql='select top ' + CAST(@Top AS VARCHAR(10)) + ' row_number() over( ORDER BY db.ID ASC) rowId,db.* into Temp_DataBasic from [Mmd_DataBasic] db
where db.DataBasicBigTypeId = @_BigTypeId and db.DataBasicMiddleTypeId =@_MiddleTypeId '
exec sp_executesql @sql, N'@_BigTypeId varchar(50),@_MiddleTypeId varchar(50)',@_BigTypeId,@_MiddleTypeId
SELECT @FalTran = COUNT(0) FROM
(
SET ROWCOUNT @COUNT8
SELECT * FROM TranJournal
WHERE TranDate <= @TranDate
AND MerchantID = @MerchantID
ORDER BY TranDate DESC
) AS TMP
WHERE TMP.RespCode <> '00'
---------------------------------------------------------
rowcount 那一行报语法错误, 请问, 您有办法解决么?