Получить информацию о табличной функции - PullRequest
4 голосов
/ 16 января 2012

Есть ли способ получить схему возврата таблицы из табличных функций?

Теперь у меня есть только одна идея, выполнить

SELECT ROUTINE_SCHEMA,

   ROUTINE_NAME,

   ROUTINE_DEFINITION

FROM INFORMATION_SCHEMA.ROUTINES

и анализируем запрос функции, но это не самая лучшая идея. : /

Ответы [ 3 ]

9 голосов
/ 16 января 2012

Вы можете получить информацию от INFORMATION_SCHEMA.ROUTINE_COLUMNS

например

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS 
WHERE TABLE_NAME = 'YourTableValuedFunctionName'
0 голосов
/ 16 января 2012

information_schema.routines будет моим предпочтительным подходом для получения базовой информации о самой функции. Как заявил AdaTheDev, информация_schema.routine_columns является лучшим местом для получения информации о столбцах.

В качестве альтернативы вы можете выкопать информацию из системных таблиц, но это требует больше усилий, и вы не можете рассчитывать на то, что системные таблицы не изменятся в будущем выпуске. Но вы можете, если хотите:

select * from sys.columns
where object_id = object_id(N'fnc_Document_GetInfoByIndex')

(этот пример для SQL Server 2008)

0 голосов
/ 16 января 2012

Вот подход, использующий старые системные таблицы ... Просто к сведению, подход 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...