テーブル値関数からリターンテーブルスキーマを取得する方法はありますか?テーブル値関数に関する情報を取得
今私は
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のリリースで壊れそうにない、ちょうど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
information_schema.routinesは、関数自体に関する基本的な情報を得るための私の好ましい方法です。 AdaTheDevが述べているように、information_schema.routine_columnsは列についての情報を得るのに最適な場所です。
システムテーブルから情報を掘り起こすこともできますが、それはより多くの労力を要し、将来のリリースでは変更されないシステムテーブルにはカウントできません。しかし、あなたは、あなたが望んでいたことができれば:
select * from sys.columns
where object_id = object_id(N'fnc_Document_GetInfoByIndex')
(この例では、SQL Server 2008の場合)