我想创建一个简单的存储过程,它将现有表作为参数。
我认为这个程序应该有效:
@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'。
有什么建议吗?
答案 0 :(得分:3)
您必须执行以下操作:
DECLARE @SQL NVARCHAR(100)
SET @SQL = 'UPDATE ' + @TABLENAME + ' SET t.ProductID = 100 '
EXEC sp_executesql @SQL
注意:您没有WHERE
子句,因此@TableName
中的所有项目都将更新。