我有下面的T-SQL查詢(這將是一個存儲過程中):的SQL Server 2016的輸出逗號分隔的表名的列表
DECLARE @columnNames nvarchar(MAX);
SELECT
@columnNames = COALESCE(@columnNames + ',','') + sC.name
FROM
sys.columns sC
JOIN
sys.tables AS sT ON sT.object_id = sC.object_id
WHERE
sC.name NOT IN (SELECT name
FROM sys.identity_columns
WHERE is_identity = 1)
AND sT.name = 'Audit'
ORDER BY
sC.column_id
INSERT INTO [B2017].[dbo].[Audit] (@columnNames)
VALUES ('')
如果我跑得這樣的:
DECLARE @columnNames nvarchar(MAX);
SELECT
@columnNames = COALESCE(@columnNames + ',','') + sC.name
FROM
sys.columns sC
JOIN
sys.tables AS sT
ON
sT.object_id = sC.object_id
WHERE
sC.name NOT IN (SELECT name FROM sys.identity_columns WHERE is_identity = 1)
AND
sT.name = 'Audit'
ORDER BY
sC.column_id
它顯示,因爲它應該:
columnName1,columnName2,columnName3,etc...
不過,我想要做的是輸出(@columnNames)
爲INSERT INTO
這麼個我可以隨時動態更改Audit
表列名稱,而無需編輯存儲過程。
因此,採取上面的例子中列名,這就是我想要做的事:
INSERT INTO [B2017].[dbo].[Audit] (columnName1, columnName2, columnName3,etc...)
VALUES ('somevalue1,somevalue2,somevalue3,...')
當試圖上面的完整代碼(這包括INSERT INTO)我得到這個錯誤:
Msg 207, Level 16, State 1, Line 51
Invalid column name '@columnNames'
此外,你必須從columnNames刪除額外的昏迷。 –