You can alias the table variable like
SELECT A.Column1 FROM @Test A
I have a bizarre syntax problem when working with user-defined table type (which I'm using in order to pass table-valued parameters to stored procedures).
This is a sample type definition:
CREATE TYPE tvp_Test AS TABLE
(
Column1 int NOT NULL,
Column2 int NOT NULL
)
This is a test table:
DECLARE @Test tvp_Test
INSERT INTO @Test VALUES (10,11)
INSERT INTO @Test VALUES (20,21)
INSERT INTO @Test VALUES (30,31)
These commands work fine:
SELECT * FROM @Test
SELECT Column1 FROM @Test
However, trying to fully qualify a column name gives a syntax error:
SELECT @Test.Column1 FROM @Test -- Doesn't work
Any combination of quotes doesn't seem to help at all:
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'
This wouldn't seem such a terrible problem... until you start joining tables. Then it becomes a royal pain.
How can I fully qualify column names when working with user-defined table types?