获取有关表值函数的信息

时间:2012-01-16 16:28:42

标签: sql tsql

有没有办法从表值函数中获取返回表模式?

现在我只有一个想法,执行

SELECT ROUTINE_SCHEMA,

   ROUTINE_NAME,

   ROUTINE_DEFINITION

FROM INFORMATION_SCHEMA.ROUTINES

并解析函数查询,但这不是gread的想法。 :/

3 个答案:

答案 0 :(得分:9)

您可以从INFORMATION_SCHEMA.ROUTINE_COLUMNS

获取信息

e.g。

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS 
WHERE TABLE_NAME = 'YourTableValuedFunctionName'

答案 1 :(得分:0)

这是一种使用旧系统表的方法......仅供参考,AdaTheDev的方法要好得多,并且在将来的SQL版本中不太可能破解。

select so.name,sc.name,st.name,sc.length,sc.*
from sysobjects so 
join syscolumns sc on sc.id=so.id
join systypes st on st.xtype=sc.xtype
where so.xtype='TF' and sc.name not like '@%'
order by 1,colid

答案 2 :(得分:0)

information_schema.routines将是我获取有关函数本身的基本信息的首选方法。正如AdaTheDev所说,information_schema.routine_columns是获取有关列的信息的最佳位置。

您也可以从系统表中挖掘信息,但这需要花费更多精力,并且您不能指望未来版本中不会更改的系统表。但如果你愿意,你可以:

select * from sys.columns
where object_id = object_id(N'fnc_Document_GetInfoByIndex')

(此示例适用于SQL Server 2008)