Je recherche une requête SQL qui génère les définitions de fonction pour toutes les fonctions définies par l'utilisateur dans un catalogue de base de données.
J'ai trouvé aussi loin que
SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.UserFunctionName')) AS [Object Definition]
et
SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function'
mais je ne peux pas penser ou trouver un moyen d'alimenter la liste ROUTINE_NAME en OBJECT_ID.
Le but ici est un texte consultable des définitions de fonctions définies par l'utilisateur dans une base de données pour l'analyse des modifications de la base de données, si quelque chose comme une procédure SQL complète ou un programme d'aide ciblé est plus facile, je le ferai et le publierai.
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%'
Vous pouvez utiliser un 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')