收到错误列名“@ColumnNames”无效。在最后一行(插入子句),知道为什么吗?
Declare @ColumnNames varchar(2000)
Declare @OrderId int
set @OrderId = 110077
select @ColumnNames = COALESCE(@ColumnNames + ', ', '') + COLUMN_NAME
from
INFORMATION_SCHEMA.COLUMNS
where
TABLE_NAME='OrderItems'
Insert into dbo.OrderHistory(@ColumnNames) select * from dbo.[Order] where ID= @OrderId
@ColumnNames
是一个文本字符串,而不是列列表。因此,当您尝试将其用作插入查询中的列名列表时,它会失败。
您可以使用动态 SQL 来执行您想要的操作,如下所示:
declare @insertquery nvarchar(1000)
set @insertquery = N'insert into dbo.orderhistory(' + @ColumnNames + ') select * from dbo.[Order] where ID=' + cast(@OrderId as nvarchar(10))
sp_executesql @insertquery
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)