web-dev-qa-db-fra.com

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

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.

35
stackuser83
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%'
60
RandomUs1r

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
7
Geoff
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')
3
Srikanth CHindam