【发布时间】:2014-07-31 17:19:19
【问题描述】:
请参阅下面的 DDL:
CREATE TABLE Person (ID int identity, Name varchar(30), primary key(ID))
INSERT INTO Person (Name) VALUES ('Ian')
请看下面的 TSQL:
Declare @ID int
Declare @Name varchar(30)
set @Name = 'Ian'
select @ID=ID FROM Person WHERE Name=@Name
Print @ID
这正如我所期望的那样工作,即 1 被打印到屏幕上。我想进行更改以使表名是动态的,即
Declare @ID int
Declare @Name varchar(30)
Declare @TableName as varchar(30)
set @TableName= 'Person'
set @Name = 'Ian'
select @ID=ID FROM @TableName WHERE Name=@Name
Print @ID
上面的SQL显然是行不通的。我意识到我必须使用 TSQL。我尝试过使用 EXEC 和 sp_executesql,但我只能部分地到达那里。我该如何实现这一点。 SQL 语句必须是:select @ID=ID FROM @TableName WHERE Name=@Name。
【问题讨论】:
-
创建一个字符串变量来构建查询,然后对该变量使用 sp_executesql。
标签: sql sql-server tsql