有没有办法从表值函数中获取返回表模式?
现在我只有一个想法,执行
SELECT ROUTINE_SCHEMA,
ROUTINE_NAME,
ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
并解析函数查询,但这不是gread的想法。 :/
答案 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)