ADMIN_CMD プロシージャー - 管理コマンドの実行

ADMIN_CMD プロシージャーは、SQL CALL ステートメントを使用して管理コマンドを実行するアプリケーションで使用されます。

構文

Read syntax diagramSkip visual syntax diagramADMIN_CMD(command-string )

スキーマは SYSPROC です。

プロシージャー・パラメーター

コマンド・ストリング
実行する単一のコマンドを指定する、タイプ CLOB (2M) の入力引数。

許可

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

デフォルトの PUBLIC 特権

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

このプロシージャーはまた、CLP ではサポートされていない次のようなコマンドをサポートします。

使用上の注意

コマンドの実行に関する情報の検索:
  • ADMIN_CMD プロシージャーはサーバー上で実行されるので、ユーティリティー・メッセージもサーバー上で作成されます。 MESSAGES ON SERVER オプション (詳細は、該当するコマンドの項を参照してください) は、メッセージ・ファイルをサーバー上で作成することを指示します。
  • コマンドの実行状況は、CALL ステートメントからの結果である SQLCA で戻されます。
  • 管理コマンドの実行が正常に完了した場合に、実行状況以外のものがコマンドから戻されるとしたら、そのような追加情報は、結果セット (最大 2 つまで) の形式で戻されます。 例えば、EXPORT コマンドが正常に実行された場合、戻される結果セットには、エクスポートされた行の数についての情報が含まれます。一方、RUNSTATS コマンドが正常に実行された場合、結果セットは戻されません。 結果セットの情報は、対応するコマンドとともに説明されています。
  • 管理コマンドの実行が正常に完了しなかった場合、ADMIN_CMD プロシージャーから SQL20397W 警告メッセージが戻されます。それには、管理コマンドが失敗した理由に関する詳細を示した結果セットが伴います。 ADMIN_CMD プロシージャーを使用するアプリケーションはすべて、このプロシージャーから戻される SQLCODE を検査する必要があります。 SQLCODE が >= 0 の場合、管理コマンドの結果セットを検索する必要があります。 以下の表は、MESSAGES ON SERVER オプションを使用した場合としなかった場合に、どのような情報が戻されるかを示しています。
    表 1. ADMIN_CMD プロシージャーから戻される SQLCODE および情報
    管理コマンドの実行状況 MESSAGES ON SERVER オプションを指定した場合 MESSAGES ON SERVER オプションを指定しなかった場合
    成功 戻された SQLCODE が >= 0 の場合: 追加情報 (結果セット) があれば、それが戻されます。 戻された SQLCODE が >= 0 の場合: 追加情報 (結果セット) があれば、それが戻されます。ただし、MSG_RETRIEVAL 列と MSG_REMOVAL 列は NULL です。
    失敗 戻された SQLCODE が 20397 の場合: 追加情報 (結果セット) が戻されます。ただし、データが設定されているのは MSG_RETRIEVAL 列と MSG_REMOVAL 列だけです。 戻された SQLCODE が < 0 の場合: 追加情報 (結果セット) は戻されません。
  • 結果セットは CLP から、または JDBC や CLI アプリケーションなどのアプリケーションから取得できますが、組み込み C アプリケーションからは取得できません。
  • 大文字と小文字を区別する名前および 2 バイト文字セット (DBCS) 名は、&#xa5;" MyTabLe &#xa5;" のように円記号および二重引用符で囲む必要があります。

ADMIN_CMD を介して実行されるすべてのコマンドでは、データベースへの接続を確立したユーザー ID が認証で使用されます。

必要な追加の権限 (例えば、データベース・サーバー上のファイル・システムへのアクセスを必要とするコマンドに必要な追加の権限) については、該当するコマンドを解説している参照情報に記載されています。

ユーザー定義関数 (SQLSTATE 38001) またはトリガーからこのプロシージャーを呼び出すことはできません。