GET_ROUTINE_NAME プロシージャー - SQL PL オブジェクト名の取得

GET_ROUTINE_NAME プロシージャーは、オブジェクトの LIB_ID が指定された場合に、その SQL PL オブジェクトの名前を返します。

許可

以下のいずれかの権限が必要です。
  • ルーチンに対する EXECUTE 特権
  • DATAACCESS 権限
  • SQLADM 権限
  • DBADM 権限

デフォルトの PUBLIC 特権

制限のないデータベースでは、このプロシージャーが自動的に作成されると、SELECT 特権が PUBLIC に付与されます。

構文

構文図を読む構文図をスキップするGET_ROUTINE_NAME(lib_id, type,schema,module,name,specific_name )

スキーマは SYSPROC です。

ルーチン・パラメーター

lib_id
コンパイル済み SQL PL ルーチンまたはトリガーに対応する LIB_ID を指定する、タイプ INTEGER の入力引数。 これは、ランタイム SQL PL エラーの SQLCA にある SQLERRD(4) フィールドの値です。
type
エラーを引き起こしたオブジェクトのタイプを指定する、タイプ CHAR(1) の出力引数。以下のいずれかの値を使用します。
  • 'P' - プロシージャー
  • 'F' - 関数
  • 'T' - トリガー
schema
オブジェクトが属するスキーマを指定する、タイプ VARCHAR(128) の出力引数。
module
オブジェクトが属するモジュールを指定する、タイプ VARCHAR(128) の出力引数。 オブジェクトがトリガーである場合、またはモジュールに属していない場合は、NULL になります。
name
オブジェクトの名前を指定する、タイプ VARCHAR(128) の出力引数。
specific_name
オブジェクトの特定名を指定する、タイプ VARCHAR(128) の出力引数。 オブジェクトがトリガーの場合は、NULL になります。

使用上の注意

  • SQLCA 構造に、SQL PL ルーチンまたはトリガーの実行時に発生したエラーが入っている場合、SQLCAID フィールドには値 'SQLCAM' が入り、SQLERRM(4) にはエラーを引き起こしたオブジェクトを一意的に識別する数値が入ります。 このユニーク ID は、SYSCAT.ROUTINES および SYSCAT.TRIGGERS カタログ・ビューの LIB_ID 列に対応します。 GET_ROUTINE_NAME ルーチンは、指定された LIB_ID 値を、対応するオブジェクト名にマップします。
  • SYSPROC.GET_ROUTINE_NAME に指定した最初の引数の値が SQL PL のルーチンまたはトリガーに対応していない場合、このプロシージャーはすべての出力パラメーターに NULL を返し、ルーチンまたはトリガーが見つからなかったことを示します。

アプリケーションの実行がエラー終了し、SQLCA 構造に以下の情報が記述されているとします。
   SQLCA Information
   
    sqlcaid : SQLCAM    sqlcabc: 136   sqlcode: -801 
    ...
    sqlerrd : (1) 0         (2) 0                (3) 3
              (4) 13152254  (5) 0                (6) 0
   
    ...
    sqlstate: 22012
SQLCAID フィールドに SQLCAM とあることから、SQL PL オブジェクトの実行中にエラーが発生したことが分かります。 SQLERRD(3) および SQLERRD(4) フィールドに 3 および 13152254 という値があることは、値 13152254 によって識別される SQL PL オブジェクトの 3 行目にあるステートメントがエラーの発生原因であることを示しています。 その SQL PL オブジェクトが何であるかを判別するには、次のような方法で SYSPROC.GET_ROUTINE_NAME を呼び出します。
   db2 call "GET_ROUTINE_NAME(13152254, ?, ?, ?, ?, ?)"
   
   Value of output parameters
   --------------------------
   Parameter Name  : OBJTYPE
   Parameter Value : P
   
   Parameter Name  : OBJSCHEMA
   Parameter Value : APPDEV
   
   Parameter Name  : OBJMODULE
   Parameter Value : -
   
   Parameter Name  : OBJNAME
   Parameter Value : PROC2
   
   Parameter Name  : OBJSPECIFIC
   Parameter Value : APPDEV_PROC2
   
   Return Status = 0
SYSPROC.GET_ROUTINE_NAME への呼び出しから得られる OUT パラメーターの値は、ストアード・プロシージャー APPDEV.PROC2 からエラーが発生したことを示しています。