如何在下面的SQL查询中使用动态表名?
"INSERT INTO `tableName` (`ADUC`, `DHCP`, `DISK`, `DNS`, `Exchange`, `HOSTNAME`, `HWID`, `IP`, `OS`) values (@aduc,@dhcp,@disk,@dns,@exchange,@hostname,@hwid,@ip,@os)"
目前我通过
宣布tableName
Dim tableName = My.Computer.Name.ToString
我希望表名反映计算机名称,因为我在PhpMyAdmin中创建了这个名称,所以有关如何执行此操作的信息吗?
请注意:``
需要保留在表名的任何一侧,以支持查询中带连字符的表名。
答案 0 :(得分:2)
"INSERT INTO `"+tableName+"` (`ADUC`, `DHCP`, `DISK`, `DNS`, `Exchange`, `HOSTNAME`, `HWID`, `IP`, `OS`) values (@aduc,@dhcp,@disk,@dns,@exchange,@hostname,@hwid,@ip,@os)"
答案 1 :(得分:0)
您可以创建如下所示的存储过程,并将tablename和values作为参数传递,因为您已经知道了表模式。
create table dynamictest
create table dynamictest(id varchar(max));
现在您需要插入值,但表名是动态的,因此您需要传递它。
create PROCEDURE [dbo].[mssql_DynamicTableTest]
@LogTable VARCHAR(1024),
@code NVARCHAR(Max)
AS
BEGIN
DECLARE
@sql NVARCHAR(MAX),
@params NVARCHAR(Max);
SET @params = N'@LogTable VARCHAR(1024),@code NVARCHAR(Max)';
SET @sql = N'INSERT INTO '+@LogTable+' VALUES ('''+@code+''')';
select @sql;
EXEC sp_executesql @sql, @params, @LogTable,@code;
END
现在通过传递表名" dynamictest"来执行能够存储过程。和价值"测试"。