如何解决在插入语句中将表名,列名和值指定为变量时,将数据插入SQL Server表中?
我正在尝试创建一个通用脚本,以将数据从一个数据库复制到另一个数据库,而我已经编写了此脚本。
USE TargetDatabase;
DECLARE @SourceDatabase NVARCHAR(100);
DECLARE @TargetDatabase NVARCHAR(100);
DECLARE @SourceTable NVARCHAR(100);
DECLARE @TargetTable NVARCHAR(100);
DECLARE @var NVARCHAR(MAX);
SET @SourceDatabase = 'SourceDB'
SET @TargetDatabase = 'TargetDB'
SET @SourceTable = 'SourceTable'
SET @TargetTable = 'TargetTable'
set @var = (SELECT STRING_AGG (QUOTENAME(COLUMN_NAME),',') from
@TargetDatabase.INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TargetTable);
正如您在下面看到的那样,在 INSERT 语句中,我将表名,列名和值作为变量。这是我遇到的问题,因此基本上我不知道如何评估这些变量 @ var,@ SourceTable,@ TargetTable 。
INSERT INTO @TargetTable (SELECT @Var)
SELECT * FROM @SourceTable
我被困在这里,我不知道如何解决这个问题。谁能解释我如何解决这个问题?
解决方法
还有许多其他方式可以运行动态查询,但这是您可以根据需要运行查询的一种方式。
declare @table nvarchar(50)
declare @query nvarchar(500)
set @table = 'Test'
set @query='insert into [' +@table+ '] Select * from [' +@table+ ']';
Exec sp_executesql @query;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。