Ответ 1
SELECT name, definition, type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o
ON m.object_id=o.object_id
WHERE type_desc like '%function%'
Я ищу SQL-запрос, который выводит определения функций для всех пользовательских функций в каталоге базы данных.
Я нашел до
SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.UserFunctionName')) AS [Object Definition]
а также
SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function'
но я не могу придумать или найти способ подачи списка ROUTINE_NAME в OBJECT_ID.
Цель здесь - поиск текста определений функций, определенных пользователем, в базе данных для анализа изменений базы данных, если что-то вроде полной процедуры SQL или выбранной вспомогательной программы проще, я сделаю это и опубликую.
SELECT name, definition, type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o
ON m.object_id=o.object_id
WHERE type_desc like '%function%'
Вы можете использовать CTE:
with functions(routine_name) as
(SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function')
select
OBJECT_DEFINITION(OBJECT_ID(routine_name)) AS [Object Definition]
from
functions
SELECT O.name, M.definition, O.type_desc, O.type
FROM sys.sql_modules M
INNER JOIN sys.objects O ON M.object_id=O.object_id
WHERE O.type IN ('IF','TF','FN')