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 に渡して、そこで呼び側のストアドプロシージャ名を取得することも可能です。