【发布时间】:2013-05-08 14:35:53
【问题描述】:
我想创建一个简单的存储过程,它以现有表为参数。
我认为这个程序应该可行:
@UserID INT,
@TableName varchar(255)
AS
BEGIN
IF(@UserID is not null)
BEGIN
update t
set t.ProductID = 100
from dbo.[@TableName] t
END
当我使用表名执行此存储过程时,查询完成但出现错误:
无效的对象名称“dbo.@TableName”。
有什么建议吗?
【问题讨论】:
-
你不能像这样查询动态表名。需要使用动态 TSQL
-
对此的规范阅读; sommarskog.se/dynamic_sql.html
标签: sql sql-server tsql stored-procedures