2012-01-16 14 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のリリースで壊れそうにない、ちょうどFYI ...古いシステムテーブルを使用したアプローチです。

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の場合)
関連する問題