2014-03-04 73 views
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' 

這似乎不是這樣一個可怕的問題......直到你開始連接表。然後它變成皇家的痛苦。

如何在使用用戶定義的表格類型時完全限定列名稱?

回答

1

您可以像別名

SELECT A.Column1 FROM @Test A 
表變量
相關問題