2013-03-14 23 views
23

Szukam zapytania SQL, które wyświetla definicje funkcji dla wszystkich zdefiniowanych przez użytkownika funkcji w katalogu bazy danych.Lista SQL wszystkich zdefiniowanych przez użytkownika funkcji w bazie danych

znalazłem miarę

SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.UserFunctionName')) AS [Object Definition] 

i

SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function' 

ale nie mogę myśleć albo znaleźć sposób, aby nakarmić listę ROUTINE_NAME do object_id.

Celem tutaj jest przeszukiwalny tekst zdefiniowanych przez użytkownika definicji funkcji w bazie danych do analizy zmian bazy danych, jeśli coś w rodzaju pełnej procedury SQL lub zamierzonego programu pomocniczego jest łatwiejsze, zrobię to i opublikuję.

+1

możliwe duplikat (http://stackoverflow.com/questions/54482/how-do-i-list-user-defined-types-in-a-sql-server-database) – Kermit

+4

@AarolamaBluenk to wcale nie jest duplikat tego pytania. to szuka udf i ich definicji, nie udt's ... – rsbarro

Odpowiedz

37
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%' 
+0

Ta odpowiedź jest lepsza dla umożliwienia łatwiejszego włączenia innych kolumn informacji w razie potrzeby. GeFe CTE również świetnie pasuje do rachunku, uważam, że CTE są przydatną techniką, którą chciałbym znać w innych sytuacjach. Wiedząc o sys.sql_modules i jego odnośniku key id_obiektu, z RandomUs1r, IN (SELECT SUBQUERY) był najlepszy dla moich celów. – stackuser83

4

Można użyć CTE [? Jak mogę wymienić typy zdefiniowane przez użytkownika w bazie danych SQL Server]

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 
1
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') 
+0

wytłumacz kod – tinamou

+1

Witam tinamou, Tutaj pobieramy nazwę funkcji, definicję i Typ funkcji zdefiniowanej przez użytkownika. zdefiniowana przez użytkownika funkcja może być funkcją typu Inline (IF) lub funkcją Scalar (FN) lub funkcją wyceny tabeli (TF). –

Powiązane problemy