
This automates the tedious work of converting Oracle PL/SQL stored procedures to PostgreSQL PL/pgSQL during database migrations. It reads from a specific directory structure, translates Oracle syntax while preserving method signatures and type-anchored parameters, and writes each migrated procedure to its own file in the Postgres output directory. The skill applies Oracle-compatible collation rules and leverages the orafce extension where it helps. What's useful here is that it handles the fiddly bits like keeping input parameters type-anchored while using explicit types for output parameters, which is exactly the kind of inconsistency that trips people up when doing this manually. If you're migrating an Oracle database with hundreds of stored procedures, this will save you from a lot of repetitive, error-prone conversion work.
$ npx -y skills add github/awesome-copilot --skill migrating-oracle-to-postgres-stored-procedures --agent claude-codeInstalls into .claude/skills of the current project.
Translate Oracle PL/SQL stored procedures and functions to PostgreSQL PL/pgSQL equivalents.
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
Step 1: Read the Oracle source procedure
Read the Oracle stored procedure from .github/oracle-to-postgres-migration/DDL/Oracle/Procedures and Functions/. Consult the Oracle table/view definitions at .github/oracle-to-postgres-migration/DDL/Oracle/Tables and Views/ for type resolution.
Step 2: Translate to PostgreSQL PL/pgSQL
Apply these translation rules:
PARAM_NAME IN table_name.column_name%TYPE).NUMERIC, VARCHAR, INTEGER) for output parameters passed to other procedures — do not type-anchor these.COMMENT or GRANT statements.COLLATE "C" only when Oracle-compatible binary ordering is required and no other sort order is specified.NLS_SORT = French), map to an explicit PostgreSQL locale collation instead of "C".SELECT collname, collprovider, collcollate, collctype FROM pg_collation ORDER BY collname; to discover collations in the target environment.UNION ALL as a review checkpoint. Validate plan quality per branch and restructure if combined-branch planning causes regressions (for example, unexpected sequential scans on large tables).orafce extension when it improves clarity or fidelity.Consult the PostgreSQL table/view definitions at .github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Tables and Views/ for target schema details.
Step 3: Write the migrated procedure to Postgres output directory
Place each migrated procedure in its own file under .github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Procedures and Functions/{PACKAGE_NAME_IF_APPLICABLE}/. One procedure per file.
{ProjectName}is the project's assembly/folder name with spaces normalized to-(e.g.MyApp.DataAccess). This matches the path used by the agent and other migration skills.
Sponsors