使用用户定义的表类型(我正在使用它以便将表值参数传递给存储过程)时,我有一个奇怪的语法问题。
这是一个样本类型定义:
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'
这似乎不是一个可怕的问题......直到你开始加入牌桌。然后它变成了皇室的痛苦。
在使用用户定义的表类型时,如何完全限定列名?
答案 0 :(得分:1)
您可以为表变量添加别名,如
SELECT A.Column1 FROM @Test A