手机
当前位置:查字典教程网 >编程开发 >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 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)

sqlserver多版本查看版本号

分页存储过程代码

Sql Server 存储过程实例讲解

sql2005 存储过程分页代码

SqlServer创建存储过程

Sql Server 2000 行转列的实现(横排)

SQL存储过程实现SPSS交叉表

SQL Server 2005通用分页存储过程及多表联接应用

Sql Server中REPLACE函数的使用

精品推荐
分类导航