是否有任何方法從表值函數獲取返回表模式?獲取有關表值函數的信息
現在我只有一個想法,執行
SELECT ROUTINE_SCHEMA,
ROUTINE_NAME,
ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
,並解析功能查詢,但它不是gread想法。 :/
是否有任何方法從表值函數獲取返回表模式?獲取有關表值函數的信息
現在我只有一個想法,執行
SELECT ROUTINE_SCHEMA,
ROUTINE_NAME,
ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
,並解析功能查詢,但它不是gread想法。 :/
您可以從INFORMATION_SCHEMA.ROUTINE_COLUMNS
例如獲取信息
SELECT *
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
WHERE TABLE_NAME = 'YourTableValuedFunctionName'
這是一種使用舊系統表的方法......僅供參考,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
information_schema.routines將是我的首選獲取有關函數本身的基本信息的方法。正如AdaTheDev所說,information_schema.routine_columns是獲取有關列的信息的最佳位置。
您也可以從系統表中挖掘信息,但這需要付出更多努力,並且您不能指望未來發行版中的系統表不會發生變化。但是你可以,如果你想:
select * from sys.columns
where object_id = object_id(N'fnc_Document_GetInfoByIndex')
(本例中是SQL Server 2008)