【问题标题】:Table variable in a stored procedure存储过程中的表变量
【发布时间】: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”。

有什么建议吗?

【问题讨论】:

标签: sql sql-server tsql stored-procedures


【解决方案1】:

您必须执行以下操作:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
相关资源
最近更新 更多