0
當我使用用戶定義的表類型(爲了將表值參數傳遞給存儲過程時),我有一個奇怪的語法問題。如何完全限定用戶定義表類型中的列名稱?
這是一個示例類型定義:
CREATE TYPE tvp_Test AS TABLE
(
Column1 int NOT NULL,
Column2 int NOT NULL
)
這是一個測試表:
DECLARE @Test tvp_Test
INSERT INTO @Test VALUES (10,11)
INSERT INTO @Test VALUES (20,21)
INSERT INTO @Test VALUES (30,31)
這些命令做工精細:
SELECT * FROM @Test
SELECT Column1 FROM @Test
然而,試圖完全限定一個列名給出語法錯誤:
SELECT @Test.Column1 FROM @Test -- Doesn't work
引號的任意組合似乎並沒有在所有幫助:
SELECT @Test.'Column1' FROM @Test -- Doesn't work either
SELECT '@Test'.Column1 FROM @Test -- As above
SELECT '@Test'.'Column1' FROM @Test -- Still no luck
SELECT '@Test.Column1' FROM @Test -- This works but selects the text '@Test.Column1'
這似乎不是這樣一個可怕的問題......直到你開始連接表。然後它變成皇家的痛苦。
如何在使用用戶定義的表格類型時完全限定列名稱?