sqlserver 存储过程中的top+变量使用分析(downmoon)_mssql数据库教程-查字典教程网
sqlserver 存储过程中的top+变量使用分析(downmoon)
sqlserver 存储过程中的top+变量使用分析(downmoon)
发布时间:2016-12-28 来源:查字典编辑
摘要:存储过程中的TOP后跟一个变量会如何?复制代码代码如下:CreateprocgetWorkPlan2(@intCounterint,@lng...

存储过程中的TOP后跟一个变量会如何?

复制代码 代码如下:

Create proc getWorkPlan2

(@intCounter int

,@lngUserID int)

as

select Top 5 lngWorkID,strWorkName,strExecHumanName,strBeginDate

from worklist where lngExecHumanID= @lngUserID

order by lngWorkID desc

现在想将这里的Top5 改为变量· Top @intCounter

如下

复制代码 代码如下:

ALTER proc getWorkPlan2

(@intCounter int

,@lngUserID int)

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' 附近有语法错误。

OK!

于是改为

复制代码 代码如下:

ALTER proc getWorkPlan2

(@intCounter int

,@lngUserID int)

as

declare @strCounter varchar(10)

set @strCounter=convert(varchar(10),@intCounter)

declare @strUserID varchar(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 '

)

后来,经saucer(思归)大哥提醒,发现可以用以下语句实现(sql2005/2008):

复制代码 代码如下:

Alter proc getWorkPlan2

(

@intCounter int

,@lngUserID int

)

as

set rowcount @intCounter

select lngWorkID,strWorkName,strExecHumanName,strBeginDate

from worklist where lngExecHumanID= @lngUserID

order by lngWorkID desc

邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mssql数据库学习
    热门mssql数据库学习
    编程开发子分类