Подсчет пользовательских функций SQL Server на основе типа

Я могу подсчитать общее количество созданных пользователем функций в SQL Server, используя

SELECT COUNT(*)
FROM information_schema.routines
WHERE routine_type = 'FUNCTION'

Но это возвращает все функции, будь то функция со скалярным значением, встроенная функция или функция с табличным значением.

Есть ли способ получить количество, специфичное для типа функции? Например. считать только встроенные функции?


person Tyro    schedule 02.07.2020    source источник
comment
and DATA_TYPE = 'TABLE' поможет вам пройти часть пути.   -  person Dale K    schedule 02.07.2020
comment
Полезно, я могу получить общее количество встроенных функций и функций с табличным значением, а затем вычесть это из общего количества функций, чтобы получить скалярные. Но есть ли способ разделить табличные значения и встроенные?   -  person Tyro    schedule 02.07.2020


Ответы (1)


Это различие, которое вы ищете, относится к SQL Server и, вероятно, не распространяется на стандарт information_schema. Для этого вам нужно посмотреть системные представления:

select o.type_desc, count(*)
from sys.objects o
where o.type in ('AF', 'FN', 'FS', 'FT', 'IF', 'TF')
group by o.type_desc
order by o.type_desc;

В зависимости от используемой версии SQL Server список доступных типов объектов может отличаться. Ознакомьтесь с документацией для вашей версии по этому поводу.

person Roger Wolf    schedule 02.07.2020