我試圖聲明一個表變量,然後將它加入到我在數據庫中創建的表中。每次嘗試將我的「NAME
」字段插入到我的表中時,即使GNAME字段正常工作,我也會收到錯誤「Invalid Column Name "NAME"
」。我在做什麼錯了,我該如何加入我NAME
專欄?當從表變量中使用列時出現「無效列」
DECLARE @Names TABLE
(
ID INT,
NAME VARCHAR(100),
GNAME VARCHAR(100)
)
INSERT INTO @Names
(
ID,
NAME,
GNAME
)
SELECT
CName.ID,
Ref.NAME,
Ref.GNAME
FROM
@CurrentPositions AS CName
LEFT OUTER JOIN
dbo.NameField AS Ref
ON
CName.ID = Ref.ID
IF (OBJECT_ID('dbo.ReportTable', 'U') IS NOT NULL)
DROP TABLE dbo.ReportTable
CREATE TABLE [dbo].[ReportTable]
(
[ID_NUMBER] [INT],
[NAME] [VARCHAR](150)
[GNAME] [VARCHAR](150)
)
INSERT INTO [dbo].[ReportTable]
(
ID_NUMBER,
NAME,
GNAME
)
SELECT
C.ID_NUMBER,
N.NAME,
N.GNAME
FROM
@Names AS N
INNER JOIN
@CurrentPositions AS C
ON N.ID_NUMBER = C.ID_NUMBER
不能使用諸如@names或@ CurrentPositions之類的變量作爲表名,而無需構建動態SQL,這會打開SQL注入/風險的大門。 SQL不直接支持表名作爲變量,除非你使用動態SQL(寫出一個字符串然後執行SQL) – xQbert