手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >sqlserver 存储过程中的top+变量使用分析(downmoon)
sqlserver 存储过程中的top+变量使用分析(downmoon)
摘要:存储过程中的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

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

【sqlserver 存储过程中的top+变量使用分析(downmoon)】相关文章:

SqlServer 序号列的实现方法

Sql Server中REPLACE函数的使用

SQL存储过程实现SPSS交叉表

sqlserver 比较两个表的列

sql2005 存储过程分页代码

Sql Server 创建存储过程

sqlserver 游标的简单示例

sql server 常用的几个数据类型

SqlServer创建存储过程

sql server 2005中使用with实现递归的方法

精品推荐
分类导航