2012-01-16 2 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

Вот подход, использующий старые системные таблицы ... Просто FYI, подход 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)

Смежные вопросы