存储过程中使用变量的出错问题
存储过程中使用变量的出错问题declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
set @v1=(exec ('select top 1 max(id) from '+@tableName+' '))
在一个存储过程中,希望搜索的表名为一个变量。
并将其搜索出来的最大ID值付给一个变量。却频频出错。
高手过来指点下了。
(如果不用临时表有没什么好的实现方法呢?) 原帖由 大鱼 于 2006-1-11 09:58 发表
存储过程中使用变量的出错问题
declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
set @v1=(exec ('select top 1 max(id) from '+@tableName+' '))
在一个存储过程中,希望搜索的表 ...
用了max 应该就只能查出一个记录吧
怎么还要用top 1? 呵呵。不用TOP 1也是错误的。
在SQL 语句中exec ('select top 1 max(id) from '+@tableName+' ')并没出错。 有没有提示什么错? declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
set @v1=(exec ('select max(id) from '+@tableName+' '))
务器: 消息 156,级别 15,状态 1,行 4
在关键字 'exec' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 4
第 4 行: ')' 附近有语法错误。 declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
exec ('select =max(id) into ##ttt from '+@tableName+' ')
select @v1= from ##ttt
drop table ##ttt
select @v1
使用临时表实现的方法。看来是没什么好的办法了。只能用这个了。 原帖由 大鱼 于 2006-1-11 09:58 发表
存储过程中使用变量的出错问题
declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
set @v1=(exec ('select top 1 max(id) from '+@tableName+' '))
在一个存储过程中,希望搜索的表 ...
你看看是不是这里错?
@v1应该定义成一个表
因为select语句返回是一个集合的 declare @v1 int
declare @tableName varchar(200)
set @tableName='a'
set @v1=(select max(id)from a)
print @v1 这样可是行的哦。
页:
[1]