50

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

まで見つけました

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

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

しかし、ROUTINE_NAMEリストをOBJECT_IDにフィードする方法を考えたり見つけたりすることはできません。

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

4

5 に答える 5

81
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%'
于 2013-03-14T21:26:47.073 に答える
8

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
于 2013-03-14T21:16:35.453 に答える
5
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')
于 2017-06-06T15:12:27.407 に答える