[英]TSQL - Parameters and dynamic table names
请参见下面的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
。
您将需要为此使用动态sql。 在这里看看...
Declare @ID int
Declare @Name varchar(30)
Declare @TableName sysname
DECLARE @Sql NVARCHAR(MAX);
set @TableName= 'Person'
set @Name = 'Ian'
SET @Sql = N'select @ID = ID FROM ' + QUOTENAME(@TableName)
+ N' WHERE Name = @Name'
EXECUTE sp_executesql @Sql
,N'@ID int OUTPUT, @Name varchar(30)'
,@ID OUTPUT
,@Name
PRINT @ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.