sqlserver 存储过程中的top+变量使用分析(downmoon)

气质征服二

气质征服二

2016-02-19 09:55

下面图老师小编跟大家分享一个简单易学的sqlserver 存储过程中的top+变量使用分析(downmoon)教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!
存储过程中的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

现在想将这里的Top 5 改为变量· Top @intCounter
如下
代码如下:

ALTER proc getWorkPlan2
(@intCounter int
,@lngUserID int)
as  
)
exec sp_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)
exec sp_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

邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
展开更多 50%)
分享

猜你喜欢

sqlserver 存储过程中的top+变量使用分析(downmoon)

编程语言 网络编程
sqlserver 存储过程中的top+变量使用分析(downmoon)

在存储过程中实现分页

Web开发
在存储过程中实现分页

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

了解Oracle存储过程中的角色

编程语言 网络编程
了解Oracle存储过程中的角色

在SQLServer 2005中编写存储过程

编程语言 网络编程
在SQLServer 2005中编写存储过程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

分页 SQLServer存储过程

SQLServer
分页 SQLServer存储过程

存储过程的分析

Web开发
存储过程的分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

更改SATA模式后win7蓝屏代码0x0000007b的解决方法

更改SATA模式后win7蓝屏代码0x0000007b的解决方法

不用解压Win8.1的install.wim文件

不用解压Win8.1的install.wim文件
下拉加载更多内容 ↓