migrating-oracle-to-postgres-stored-procedures
migrating-oracle-to-postgres-stored-procedures について
Oracle PL/SQL のストアドプロシージャと関数を PostgreSQL PL/pgSQL に変換するスキルです。ソースとスキーマの確認、明示された変換制約、出力ファイルの配置を案内します。
主な機能
- 01Oracle のプロシージャとスキーマ定義を確認
- 02Oracle 構文を PostgreSQL の形式に変換
- 03シグネチャと指定された制御フローを維持
- 04照合順序と UNION ALL の動作を確認
- 05出力ファイルごとにプロシージャを1つ保存
活用シーン
- 01Oracle のストアドプロシージャを PostgreSQL に移植
- 02ターゲットスキーマを参照して関数を変換
- 03ソートと照合順序の選択を確認
- 04指定されたディレクトリ構成でプロシージャファイルを準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill migrating-oracle-to-postgres-stored-proceduresインストール後、Claude Code で/migrating-oracle-to-postgres-stored-proceduresを入力して読み込まれたか確認します。
詳細
Oracle から PostgreSQL へのストアドプロシージャの移行
Oracle の PL/SQL ストアドプロシージャと関数を、PostgreSQL の PL/pgSQL に相当するものへ変換します。
ワークフロー
Progress:
- [ ] Step 1: Read the Oracle source procedure
- [ ] Step 2: Translate to PostgreSQL PL/pgSQL
- [ ] Step 3: Write the migrated procedure to Postgres output directory
ステップ 1:Oracle のソースプロシージャを読み込む
.github/oracle-to-postgres-migration/DDL/Oracle/Procedures and Functions/ から Oracle のストアドプロシージャを読み込みます。型を解決するには、.github/oracle-to-postgres-migration/DDL/Oracle/Tables and Views/ にある Oracle のテーブル/ビュー定義を参照してください。
ステップ 2:PostgreSQL の PL/pgSQL に変換する
次の変換ルールを適用します。
- Oracle 固有の構文はすべて PostgreSQL に相当する構文に変換します。
- 元の機能と制御フローのロジックを維持します。
- 型アンカー付きの入力パラメーター(例:
PARAM_NAME IN table_name.column_name%TYPE)を維持します。 - 他のプロシージャに渡す出力パラメーターには、明示的な型(
NUMERIC、VARCHAR、INTEGER)を使用します。型アンカーは使用しないでください。 - メソッドシグネチャは変更しないでください。
- Oracle のソースにすでに含まれている場合を除き、オブジェクト名にスキーマ名を付けないでください。
- 例外処理とロールバックのロジックは変更せずに維持します。
COMMENTまたはGRANTステートメントは生成しないでください。- テキストの並べ替えでは、照合順序を意図的に適用します。
- Oracle 互換のバイナリー順序が必要で、他に指定された並べ替え順序がない場合に限り、
COLLATE "C"を使用します。 - Oracle で明示的な言語依存の並べ替え(例:
NLS_SORT = French)が使われていた場合は、"C"ではなく、明示的な PostgreSQL ロケール照合順序に対応付けます。 - 対象環境の照合順序を確認するには、
SELECT collname, collprovider, collcollate, collctype FROM pg_collation ORDER BY collname;を使用します。
- Oracle 互換のバイナリー順序が必要で、他に指定された並べ替え順序がない場合に限り、
UNION ALLはレビューのチェックポイントとして扱います。ブランチごとにプランの品質を検証し、ブランチを結合したことによってプランに問題が発生した場合(例:大きなテーブルで予期しないシーケンシャルスキャンが発生する場合)は、構造を見直してください。- 明確さや忠実度が向上する場合は、
orafce拡張機能を活用します。
ターゲットのスキーマの詳細については、.github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Tables and Views/ にある PostgreSQL のテーブル/ビュー定義を参照してください。
ステップ 3:移行したプロシージャを Postgres の出力ディレクトリに書き込む
移行した各プロシージャは、.github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Procedures and Functions/{PACKAGE_NAME_IF_APPLICABLE}/ の下に、それぞれ個別のファイルとして配置します。1 ファイルにつき 1 プロシージャとします。
{ProjectName}は、プロジェクトのアセンブリ名/フォルダー名からスペースを-に置き換えたものです(例:MyApp.DataAccess)。これはエージェントや他の移行スキルで使用されるパスと一致します。