ストアドプロシージャ(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 FROM アーカイブファイル名 [OWNER 所有ユーザー名 ]
- アーカイブファイル名
- 実行モジュールが格納されているアーカイブファイル名へのパスを指定します。
- OWNER 所有ユーザー名
- ストアドプロシージャの所有者となるユーザーの名前を指定します。指定しなかった場合は、もともとの所有者の名前が使用されます。
手順
- ストアドプロシージャを定義済みのデータベースに接続します。 以下はsampleデータベースにストアドプロシージャが格納されていると仮定した場合の例です。
db2 ==> CONNECT TO sample↓
- GET ROUTINEコマンドを実行し、実行モジュールのアーカイブを作成します。 以下は、db2inst1というスキーマで定義されているストアドプロシージャproc1の実行モジュールを、アーカイブファイルprocs.sarに取り出す場合の例です。
db2 ==> GET ROUTINE INTO procs.sar FROM PROCEDURE db2inst1.proc1↓
- ストアドプロシージャの移行先のデータベースに接続します。 以下は、sample2データベースにストアドプロシージャを移行すると仮定した場合の例です。
db2 ==> CONNECT TO sample2↓
- PUT ROUTINEコマンドを実行し、実行モジュールのアーカイブを登録します。
db2 ==> GET ROUTINE FROM procs.sar↓
注意
- ストアドプロシージャの移動を行うためにクライアントをインストールする場合は、通常の管理クライアントやランタイムクライアントでなく、アプリケーション開発クライアントをインストールしてください。
- PUT ROUTINEを実行する場合は、接続しているユーザーおよび所有者となるユーザーに適切な権限が与えられているか注意してください。
- アーカイブにはひとつの実行モジュールしか格納できません。