请教一个有关TOP @Num 的问题,多谢!

dickiesh 2004-06-21 07:46:04
MS-SQL Server 2000 存储过程

我想在存储过程中通过游标提取出前M条记录中的N条记录
这里N=5,M=@UserNum

语句如下:

declare ActResultSet cursor local for select top 5 ActNum, Payment, PasvNum, DealTime from (select top @_iAccount ActNum, Payment, PasvNum, DealTime FROM DealHis where ActNum=@UserNum order by DealTime desc) b order by DealTime

查询分析器提示:'@_iAccount' 附近有语法错误。
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickiesh 2004-06-21
  • 打赏
  • 举报
回复
多谢zjcxc(邹建) & zarge(鲨猩)
请问
作用域为Global的游标在什么时候释放。
zarge 2004-06-21
  • 打赏
  • 举报
回复
declare @cmd varchar(8000)

set @cmd = 'select top 5 ActNum, Payment, PasvNum, DealTime into ##tmp from (select top ' + cast( @_iAccount as varchar ) + ' ActNum, Payment, PasvNum, DealTime FROM DealHis where ActNum=' + cast( @UserNum as varchar ) + 'order by DealTime desc) b order by DealTime'

exec( @cmd )

declare ActResultSet cursor local for select ActNum, Payment, PasvNum, DealTime from ##tmp order by dealtime

open ...
close ...
deallocate ...

drop table ##tmp
zjcxc 元老 2004-06-21
  • 打赏
  • 举报
回复
top 后面不能用变量 .
zjcxc 元老 2004-06-21
  • 打赏
  • 举报
回复

declare @s varchar(8000)
set @s='declare ActResultSet cursor global for select top 5 ActNum, Payment, PasvNum, DealTime from (select top '+cast(@_iAccount as varchar)+' ActNum, Payment, PasvNum, DealTime FROM DealHis where ActNum=@UserNum order by DealTime desc) b order by DealTime'
exec(@s)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧