T-SQL: 現在のストアドプロシージャ名を取得する

現在のストアドプロシージャ名を取得するには?

ログ機能などを作っている時に、実行したストアドプロシージャ名を取得して保存しておきたい時があるかもしれません。

ここではそんな時に使えるスクリプトをご紹介します。

ストアドプロシージャ内でそのストアドプロシージャ名を取得するには

以下のスクリプトで、ストアドプロシージャが実行されている時に、ストアドプロシージャ内でそのストアドプロシージャ名を取得することができます。

SELECT OBJECT_NAME(@@PROCID)

まず、@@PROCID ですが、これは現在の T-SQLモジュールのオブジェクト識別子を返します。ストアドプロシージャの他にもトリガーや、ユーザー定義のファンクション内でも使えます。

そして、その ID をオブジェクト ID からオブジェクト名を返してくれる OBJECT_NAME() に渡すことによって、ストアドプロシージャ名を取得することができます。


スキーマ名も必要な場合は同様にOBJECT_SCHEMA_NAME() にオブジェクトIDを渡すことによって取得することができます。

SELECT OBJECT_SCHEMA_NAME(@@PROCID)

もちろん @@PROCID で取得した ID を、ログを保存する別の stored procedure に渡して、そこで呼び側のストアドプロシージャ名を取得することも可能です。

© 2010-2024 SQL Server 入門