Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否有方法获取在函数/存储过程中创建的表的字段名?_Sql Server_Tsql - Fatal编程技术网

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%'