2013-03-14 14 views
23

データベースカタログ内のすべてのユーザー定義関数の関数定義を出力するSQL照会を探しています。データベース内のすべてのユーザー定義関数のSQLリスト

私は限り

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

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

などを発見したが、私は考えるかOBJECT_IDにROUTINE_NAMEリストを養うための方法を見つけることができません。

ここでの目的は、データベース変更分析のためのデータベース内のユーザー定義関数定義の検索可能なテキストです。完全なSQLプロシージャーや目的のヘルパー・プログラムなどの方が簡単な場合は、それを行い、投稿します。

+1

の可能複製(http://stackoverflow.com/questions/54482/how-do-i-list-user-defined-types-in-a-sql-server-database) – Kermit

+4

@AarolamaBluenkこれはその質問の複製ではありません。これは、udtのものではなく、udfの定義とその定義を探しています。 – rsbarro

答えて

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

この回答は、必要に応じて他の情報の列を簡単に含めることができます。 GeoffのCTEもこの法案にぴったり合っています.CTEは他の状況でも知っていたと思う便利なテクニックだと思います。 RandomUs1rからsys.sql_modulesとそのobject_idキー参照を知っていれば、IN(SELECT SUBQUERY)が私の目的に最も適していました。 – stackuser83

4

あなたは、CTEを使用することができます:[?私は、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

コードを説明してください – tinamou

+1

こんにちはtinamou、 ここでは、関数の名前、定義、ユーザー定義関数の種類を取得しています。 ユーザ定義関数は、インライン関数(IF)またはスカラ関数(FN)またはテーブル値関数(TF)にすることができます。 –

関連する問題