我正在处理一个查询,需要将行插入到具有相同列名的表和临时表中。
我希望避免重复每个insert语句中的列名,我希望创建一个列表,并将列表传递给insert语句。
到目前为止,我的情况如下:
DECLARE @columnNameList varchar(MAX) = COALESCE(RecType, ColumnName,
SourcePosition, MaxWidth, isNullable, dotNetDataType, [Format])
EXEC('INSERT INTO #RowList (' + @columnNameList + ')
VALUES......这几乎成功了。对于每个列名,我都会得到一个错误,如下所示:
无效列名“RecType”
我认为这个错误是因为在将列名转换为字符串时,它周围有单引号。
是否有一种方法来构建列对象列表,而不是传递字符串?
发布于 2016-09-09 17:14:05
尝试下面的查询。
create table #rowlist (RecType int, ColumnName int,
SourcePosition int, MaxWidth int, isNullable int, dotNetDataType int, [Format] int)
DECLARE @columnNameList nvarchar(MAX) ='(RecType, ColumnName,
SourcePosition, MaxWidth, isNullable, dotNetDataType, [Format])'
DECLARE @SQLCMD nvarchar(MAX) =N'INSERT INTO #RowList ' + @columnNameList + N' VALUES (1,1,1,1,1,1,1)'
exec(@sqlcmd)https://stackoverflow.com/questions/39414347
复制相似问题