21

バージョン: SQLServer 8

sqlserver に保存されている関数の内容、つまり関数が正確に何をしているかを表示したいと考えています。

ここにリストされているオプションはどれも機能しません。sys.objects と呼ばれるデータベース/テーブルはないようです。information_table.routines テーブルをクエリできましたが、探している関数が含まれていません。私の機能は次の場所にあります。

DBName.dbo.関数名

この関数の内容を表示するにはどうすればよいですか?

4

7 に答える 7

31

sp_helptextコマンドを使用して、定義を表示できます。それは単に

ユーザー定義ルール、デフォルト、暗号化されていない Transact-SQL ストアド プロシージャ、ユーザー定義 Transact-SQL 関数、トリガー、計算列、CHECK 制約、ビュー、またはシステム ストアド プロシージャなどのシステム オブジェクトの定義を表示します。

例えば;

EXEC sp_helptext 'StoredProcedureName'

編集:databasesまたはserverが異なる 場合は、それらを指定することでも実行できます

EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
于 2013-03-20T11:15:06.940 に答える
7
select definition 
from sys.sql_modules 
where object_name(object_id) like 'functionName'
于 2013-03-20T11:36:44.873 に答える
2
--ShowStoredProcedures
select p.[type]
      ,p.[name]
      ,c.[definition]
  from sys.objects p
  join sys.sql_modules c
    on p.object_id = c.object_id
 where p.[type] = 'P'
   --and c.[definition] like '%foo%'
ORDER BY p.[name]
___________

SELECT OBJECT_NAME(object_id) ProcedureName,
       definition
FROM sys.sql_modules
WHERE objectproperty(object_id,'IsProcedure') = 1
ORDER BY OBJECT_NAME(object_id)
于 2014-02-21T22:23:59.853 に答える
1

私はむしろ INFORMATION_SCHEMA.ROUTINES を使用します:

select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED 
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'

ROUTINE_DEFINITION 列を新しいウィンドウにコピーするだけで、完全なコンテンツを表示できます。

于 2015-02-13T22:53:12.097 に答える