一个存储过程的问题,请帮忙!急!!!!!

tcrct 2007-03-02 12:21:55
在存储过程里:
create proc proc_test
@tabName varchar(100)
as
declare @rowCounts int
select @rowCounts = count(*) from @tabName
print @rowCounts

exec proc_test 'users'

执行时会报错,说必须声明变量@tabName
如果我将count(*) from @tabName 改为 count(*) from users 则可以通过
请问这是为什么呢?如何解决这个问题。
急需解决,谢谢!!!!!!!
...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcrct 2007-03-02
  • 打赏
  • 举报
回复
谢谢您们的的帮忙,问题已经解决了,结帐!!
hrb2008 2007-03-02
  • 打赏
  • 举报
回复
create proc proc_test
@tabName varchar(100)
as
declare @s
set @s='select count(*) from '@tabName
exec (@s)
rookie_one 2007-03-02
  • 打赏
  • 举报
回复
用select赋值时,from后的表名如果是变量就会出这问题。
一般采用以字符串的形式用exec来执行躲避此问题.
47522341 2007-03-02
  • 打赏
  • 举报
回复
select子句中的from后面的词语必须是表名,并且不能是变量;
执行动态语句查询时,必须使用exec或者sp_executeSql存储过程。
exec('select * from '+@tabname)
set @RowCounts = @@Rowcount
marco08 2007-03-02
  • 打赏
  • 举报
回复
--or

create proc proc_test
@tabName varchar(100)
as
declare @rowCounts int, @sql nvarchar(4000)
set @sql='select @rowCounts = count(*) from '+@tabName
exec sp_executesql @sql, N'@rowCounts int output', @rowCounts output
print @rowCounts
marco08 2007-03-02
  • 打赏
  • 举报
回复
--try

create proc proc_test
@tabName varchar(100)
as
exec('
declare @rowCounts int
select @rowCounts = count(*) from '+@tabName+'
print @rowCounts
')

34,590

社区成员

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

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