1

我想创建一个简单的存储过程,它将现有表作为参数。

我认为这个程序应该有效:

@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”。

有什么建议吗?

4

1 回答 1

3

您必须执行以下操作:

DECLARE @SQL NVARCHAR(100)
SET @SQL = 'UPDATE ' + @TABLENAME + ' SET t.ProductID = 100 '
EXEC sp_executesql @SQL

注意:您没有WHERE子句,因此@TableName将更新中的所有项目。

于 2013-05-14T10:48:04.583 回答