您现在的位置是:网站首页> 编程资料编程资料
sqlserver 存储过程中的top+变量使用分析(downmoon)_mssql2005_
2023-05-27
463人已围观
简介 sqlserver 存储过程中的top+变量使用分析(downmoon)_mssql2005_
存储过程中的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
邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
复制代码 代码如下:
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
邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
相关内容
- SQL Server Management Studio Express管理器 没有导入导出数据的向导的解决方法_mssql2005_
- 解决SQL2005备份数据库.dat或bak还原时的结构错误的解决方法_mssql2005_
- SQL2005日志收缩方法_mssql2005_
- 简单实用SQL脚本Part SQLServer 2005 链接服务器_mssql2005_
- SQLServer分布式事务问题_mssql2005_
- SqlServer 2005中使用row_number()在一个查询中删除重复记录_mssql2005_
- SQL2005的默认端口的修改方法_mssql2005_
- SQLSERVER 2005的ROW_NUMBER、RANK、DENSE_RANK的用法_mssql2005_
- sqlserver2005 TSql新功能学习总结(数据类型篇)_mssql2005_
- SqlServer 2005 中字符函数的应用_mssql2005_
