Liste SQL de toutes les fonctions définies par l'utilisateur dans une base de données

Je suis à la recherche d'une requête SQL qui affiche les définitions de fonctions 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 de nourrir la liste ROUTINE_NAME à L'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 base de données, si quelque chose comme une procédure SQL complète ou un programme d'assistance plus facile, je vais le faire et le poster.

26
demandé sur Kermit 2013-03-15 01:08:06

3 réponses

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%'
43
répondu RandomUs1r 2016-06-10 08:11:56

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
6
répondu Geoff 2013-03-14 21:16:35
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')
1
répondu Srikanth CHindam 2017-06-06 19:08:07