バージョン:SQLServer 8
Sqlserverのストアド関数の内容、つまり関数が正確に何をしているかを表示したいと思います。
リストされているオプションはありません here sys.objectsと呼ばれるデータベース/テーブルは存在しないようです。 information_table.routinesテーブルをクエリできましたが、探している関数は含まれていません。私の機能は次の場所にあります。
DBName.dbo.functionName
この関数の内容を表示するにはどうすればよいですか?
sp_helptext コマンドを使用して、定義を表示できます。それは単に
ユーザー定義ルール、デフォルト、暗号化されていないTransact-SQLストアドプロシージャ、ユーザー定義Transact-SQL関数、トリガー、計算列、CHECK制約、ビュー、またはシステムストアドプロシージャなどのシステムオブジェクトの定義を表示します。
例えば;
EXEC sp_helptext 'StoredProcedureName'
EDIT:databases
またはserver
が異なる場合は、それらを指定することでもできます。
EXEC [ServerName].[DatabaseName].dbo.sp_helptext 'storedProcedureName'
select definition
from sys.sql_modules
where object_name(object_id) like 'functionName'
--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)
むしろINFORMATION_SCHEMA.ROUTINESを使用します。
select ROUTINE_NAME, ROUTINE_DEFINITION, LAST_ALTERED
from INFORMATION_SCHEMA.ROUTINES where SPECIFIC_NAME = 'usp_mysp'
ROUTINE_DEFINITION列を新しいウィンドウにコピーするだけで、コンテンツ全体が表示されます。
ストアドプロシージャであるかどうかOR Function ORスクリプトの下の任意のSQLオブジェクトは完全な定義を提供します
USE<Your Data base>
SELECT OBJECT_DEFINITION (OBJECT_ID('<YOUR OBJECT NAME>')) AS ObjectDefinition
OBJECT NAMEは、ストアドプロシージャ/関数/トリガーなどのオブジェクト名です... etc name
はい、正常に動作しています。
ストアドプロシージャを表示するには... SELECT * FROM sys.procedures;
procduere名を取得し、同じものに対して以下のクエリを使用します(SQuirreL SQL Clientバージョン3.2.0-RC1を使用しています)。
EXEC sp_helptext 'StoredProcedureName'。