Sql server 是否有方法获取在函数/存储过程中创建的表的字段名?
当我需要现有表的列时,我使用查询:Sql server 是否有方法获取在函数/存储过程中创建的表的字段名?,sql-server,tsql,Sql Server,Tsql,当我需要现有表的列时,我使用查询: SELECT c.[name] FROM (SELECT * from syscolumns) c INNER JOIN (SELECT [id] from sysobjects where name= 'tableName') o on c.[id]=o.[id] 我需要在运行时创建的表的字段: select a.ID, b.lName, b.fName into #T from a
SELECT c.[name]
FROM
(SELECT * from syscolumns) c
INNER JOIN
(SELECT [id] from sysobjects where name= 'tableName') o on c.[id]=o.[id]
我需要在运行时创建的表的字段:
select
a.ID,
b.lName,
b.fName
into #T
from
a
inner join
b on a.id=b.id
将生成一个包含3行的表:
身份证件
名字
fName
我怎么做
谢谢当您创建临时表时,它将在tempdb中。您可以这样查找:
SELECT COLUMN_NAME
FROM tempdb.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '#T|_%' ESCAPE '|'
如果在tempdb中执行SELECT*FROM INFORMATION_SCHEMA.TABLES,您将看到您使用的temp表名实际上有许多下划线,后跟一个唯一标识符。所以您不会找到它,只需搜索表_name='t'
这就是为什么你必须像我上面展示的那样使用LIKE。这将在T_u上匹配,后跟任何其他字符。创建临时表时,它将在tempdb中。您可以这样查找:
SELECT COLUMN_NAME
FROM tempdb.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '#T|_%' ESCAPE '|'
如果在tempdb中执行SELECT*FROM INFORMATION_SCHEMA.TABLES,您将看到您使用的temp表名实际上有许多下划线,后跟一个唯一标识符。所以您不会找到它,只需搜索表_name='t'
这就是为什么你必须像我上面展示的那样使用LIKE。这将在T_上匹配,后跟任何其他字符。试试这个
SELECT sc.NAME
FROM
tempdb..SYSOBJECTS so JOIN
tempdb..SYSCOLUMNS sc ON sc.id = so.id
WHERE so.NAME LIKE '#T%'
试试这个
SELECT sc.NAME
FROM
tempdb..SYSOBJECTS so JOIN
tempdb..SYSCOLUMNS sc ON sc.id = so.id
WHERE so.NAME LIKE '#T%'