2012-01-16 44 views
4

是否有任何方法從表值函數獲取返回表模式?獲取有關表值函數的信息

現在我只有一個想法,執行

SELECT ROUTINE_SCHEMA, 

    ROUTINE_NAME, 

    ROUTINE_DEFINITION 

FROM INFORMATION_SCHEMA.ROUTINES 

,並解析功能查詢,但它不是gread想法。 :/

回答

8

您可以從INFORMATION_SCHEMA.ROUTINE_COLUMNS

例如獲取信息

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS 
WHERE TABLE_NAME = 'YourTableValuedFunctionName' 
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 
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)