ストアドプロシージャ(SQL)を移動するには

提供: DB2逆引きWiki
移動: 案内, 検索

DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#アプリケーション開発編】 【DB2逆引きリファレンス目次#ストアドプロシージャ

目次

前提

  • データベース接続が必要
  • 以下のいずれかが必要: SYSADM権限, DBADM権限

解説

SQLプロシージャを用いたストアドプロシージャを作成するには、Cコンパイラがインストールされている必要があります。 しかし、必ずしもCコンパイラを利用できる環境ばかりとは限りません(例えば実際の運用環境)。 このような場合、Cコンパイラがインストールされている環境でSQLプロシージャを作成し、コンパイル済みの実行モジュールをCコンパイラのない環境にコピーするとよいでしょう。 実行モジュールの移動には、CLPのGET ROUTINEおよびPUT ROUTINEコマンドを用います。 GET ROUTINEコマンドは、データベースに登録されているストアドプロシージャの実行モジュールを取り出し、ファイルにアーカイブするためのコマンドです。

GET ROUTINE INTO アーカイブファイル名 FROM [SPECIFIC] PROCEDURE ストアドプロシージャ名もしくは固有名

SPECIFIC
取り出すストアドプロシージャを固有名で指定する場合に指定します。
アーカイブファイル名
取り出した実行モジュールを格納するためのアーカイブファイル名へのパスを指定します。
ストアドプロシージャ名もしくは固有名
取り出す実行モジュールのストアドプロシージャ名もしくは固有名を指定します。 固有名で指定する場合は、SPECIFICオプションも指定する必要があります。
PUT ROUTINEコマンドは、アーカイブに格納された実行モジュールをデータベースに登録するためのコマンドです。

PUT ROUTINE FROM アーカイブファイル名 [OWNER 所有ユーザー名 ]

アーカイブファイル名
実行モジュールが格納されているアーカイブファイル名へのパスを指定します。
OWNER 所有ユーザー名
ストアドプロシージャの所有者となるユーザーの名前を指定します。指定しなかった場合は、もともとの所有者の名前が使用されます。

手順

  1. ストアドプロシージャを定義済みのデータベースに接続します。 以下はsampleデータベースにストアドプロシージャが格納されていると仮定した場合の例です。
    db2 ==> CONNECT TO sample↓
    


  2. GET ROUTINEコマンドを実行し、実行モジュールのアーカイブを作成します。 以下は、db2inst1というスキーマで定義されているストアドプロシージャproc1の実行モジュールを、アーカイブファイルprocs.sarに取り出す場合の例です。
    db2 ==> GET ROUTINE INTO procs.sar FROM PROCEDURE db2inst1.proc1↓
    


  3. ストアドプロシージャの移行先のデータベースに接続します。 以下は、sample2データベースにストアドプロシージャを移行すると仮定した場合の例です。
    db2 ==> CONNECT TO sample2↓
    


  4. PUT ROUTINEコマンドを実行し、実行モジュールのアーカイブを登録します。
    db2 ==> GET ROUTINE FROM procs.sar↓
    


注意

  • ストアドプロシージャの移動を行うためにクライアントをインストールする場合は、通常の管理クライアントやランタイムクライアントでなく、アプリケーション開発クライアントをインストールしてください。
  • PUT ROUTINEを実行する場合は、接続しているユーザーおよび所有者となるユーザーに適切な権限が与えられているか注意してください。
  • アーカイブにはひとつの実行モジュールしか格納できません。

参照

個人用ツール
名前空間

変種
操作
案内
ツール