Something I learnt about SQL table type this week
CREATE PROCEDURE #SystemTablesAndColumns
AS
DECLARE @TableType TABLE (id int, name sysname)
INSERT INTO @TableType
(
id,
name
)
SELECT id,
name
FROM sysobjects
WHERE name LIKE 'sys%'
ORDER BY name
SELECT @TableType.id AS TableID,
@TableType.name AS TableName,
syscolumns.colid AS ColumnID,
syscolumns.name AS ColumnName
FROM @TableType
INNER JOIN
syscolumns ON @TableType.id = syscolumns.id
ORDER BY @TableType.name,
syscolumns.name
RETURN
A: Because aliases are missing for the table type, as can be noted below:
CREATE PROCEDURE #SystemTablesAndColumns
AS
DECLARE @TableType TABLE (id int, name sysname)
INSERT INTO @TableType
(
id,
name
)
SELECT id,
name
FROM sysobjects
WHERE name LIKE 'sys%'
ORDER BY name
SELECT TableType.id AS TableID,
TableType.name AS TableName,
syscolumns.colid AS ColumnID,
syscolumns.name AS ColumnName
FROM @TableType AS TableType
INNER JOIN
syscolumns ON TableType.id = syscolumns.id
ORDER BY TableType.name,
syscolumns.name
RETURN
P.S.: What the temporary stored procedure above does can be acomplished in other ways. I just used it that way to show up the problem I faced this week and how I workarounded it.