请教一个小问题

robake 2010-10-21 05:15:06
declare @oldcount int

set @oldcount=1000

declare @newcount int,@sql nvarchar(4000)

set @sql='select @a=rows from sysindexes where id = object_id(''trans_normal'') and indid in (0,1)'

exec sp_executesql @sql,N'@a int output',@newcount output

if(@newcount>@oldcount)

begin

declare @a int
set @a=@newcount - @oldcount

set @sql= 'select top ' + @a + ' * From trans_normal'
print @sql

end


上述的代码总是在加红加粗的位置报错,提示服务器: 消息 245,级别 16,状态 1,行 20
将 varchar 值 'select top ' 转换为数据类型为 int 的列时发生语法错误。

请高手指导一下,如何修改。
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-10-21
  • 打赏
  • 举报
回复
declare @sql nvarchar(4000)

set @sql= N'select top ' + cast(5 as varchar(7)) + ' * From a'

exec sp_executesql @sql

userid USERname
---------- ----------
1 aa
2 bb
3 cc

(3 row(s) affected)
dawugui 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 robake 的回复:]
郁闷,还结不了贴。。。。
[/Quote]不急.
robake 2010-10-21
  • 打赏
  • 举报
回复
郁闷,还结不了贴。。。。
robake 2010-10-21
  • 打赏
  • 举报
回复
哇噻,动作就是快。结贴
SQLCenter 2010-10-21
  • 打赏
  • 举报
回复
set @sql= 'select top ' + ltrim(@a) + ' * From trans_normal'
dawugui 2010-10-21
  • 打赏
  • 举报
回复
set @sql= 'select top ' + ltrim(@a) + ' * From trans_normal'

set @sql= 'select top ' + cast(@a as varchar) + ' * From trans_normal'
dawugui 2010-10-21
  • 打赏
  • 举报
回复
set @sql= 'select top ' + ltrim(@a) + ' * From trans_normal'

34,594

社区成员

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

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