migrating-oracle-to-postgres-stored-procedures — Copilot skill
Moves Oracle PL/SQL procedures and functions to PostgreSQL PL/pgSQL. Use it during a database migration when signatures and control flow must stay intact.
npx skills add github/awesome-copilot --skill migrating-oracle-to-postgres-stored-proceduresWhat migrating-oracle-to-postgres-stored-procedures does
The skill reads Oracle procedures from .github/oracle-to-postgres-migration/DDL/Oracle/Procedures and Functions/ and checks Oracle table and view definitions for type resolution. It translates Oracle-specific syntax to PL/pgSQL while keeping method signatures, type-anchored parameters, exception handling, and rollback logic.
It maps text ordering deliberately. COLLATE "C" is used for Oracle-compatible binary ordering, while explicit linguistic sorting is mapped to a PostgreSQL locale collation. The workflow can use orafce, treats UNION ALL as a review checkpoint, and writes each migrated procedure to its own Postgres file. It does not add COMMENT or GRANT statements.
Install it when the Oracle sources and target definitions follow the expected migration paths. A different project layout is a reason to check the paths before running the skill.
What it helps with
- translate an Oracle PL/SQL procedure to PostgreSQL PL/pgSQL
- preserve method signatures and type-anchored parameters
- map Oracle text ordering to a PostgreSQL collation
- write each migrated procedure to its own Postgres file
- review
UNION ALLbranches after translation
Example prompts for the agent
- Migrate the procedure from `.github/oracle-to-postgres-migration/DDL/Oracle/Procedures and Functions/` to PostgreSQL.
- Resolve types from the table and view definitions, preserve the signature, and write the result to the Postgres output directory.
- Review text ordering and `UNION ALL` in the migrated function.
How to install migrating-oracle-to-postgres-stored-procedures
1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill migrating-oracle-to-postgres-stored-procedures2GitHub CLI
gh skill install github/awesome-copilot migrating-oracle-to-postgres-stored-procedures3Manually: put the files in place
.github/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.md1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill migrating-oracle-to-postgres-stored-procedures -a claude-code2Manually: put the files in place
~/.claude/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/migrating-oracle-to-postgres-stored-procedures/
Manually: put the files in place
.agents/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
Platform CLI
gemini skills install https://github.com/github/awesome-copilot --path skills/migrating-oracle-to-postgres-stored-proceduresManually: put the files in place
.devin/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set554
The whole set →Similar
Questions about migrating-oracle-to-postgres-stored-procedures
How do I install migrating-oracle-to-postgres-stored-procedures in GitHub Copilot?
Run npx skills add github/awesome-copilot --skill migrating-oracle-to-postgres-stored-procedures. The skill file is then placed at .github/skills/migrating-oracle-to-postgres-stored-procedures/SKILL.md.
What does migrating-oracle-to-postgres-stored-procedures do?
It translates Oracle PL/SQL procedures and functions into PostgreSQL PL/pgSQL while preserving signatures, parameters, exception handling, and rollback logic.
What files does the migration need?
It uses the Oracle procedure source, Oracle table and view definitions, and PostgreSQL target definitions in the migration directories.
Source text
SKILL.md · MIT
---
name: migrating-oracle-to-postgres-stored-procedures
description: 'Migrates Oracle PL/SQL stored procedures to PostgreSQL PL/pgSQL. Translates Oracle-specific syntax, preserves method signatures and type-anchored parameters, leverages orafce where appropriate, and applies explicit collation mapping (`COLLATE "C"` only when appropriate, locale collations when required). Use when converting Oracle stored procedures or functions to PostgreSQL equivalents during a database migration.'
---
# Migrating Stored Procedures from Oracle to PostgreSQL
Translate Oracle PL/SQL stored procedures and functions to PostgreSQL PL/pgSQL equivalents.
## Workflow
```
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:
- Translate all Oracle-specific syntax to PostgreSQL equivalents.
- Preserve original functionality and control flow logic.
- Keep type-anchored input parameters (e.g., `PARAM_NAME IN table_name.column_name%TYPE`).
- Use explicit types (`NUMERIC`, `VARCHAR`, `INTEGER`) for output parameters passed to other procedures — do not type-anchor these.
- Do not alter method signatures.
- Do not prefix object names with schema names unless already present in the Oracle source.
- Leave exception handling and rollback logic unchanged.
- Do not generate `COMMENT` or `GRANT` statements.
- Apply collation intentionally when ordering text:
- Use `COLLATE "C"` only when Oracle-compatible binary ordering is required and no other sort order is specified.
- If Oracle used explicit linguistic sorting (for example `NLS_SORT = French`), map to an explicit PostgreSQL locale collation instead of `"C"`.
- Use `SELECT collname, collprovider, collcollate, collctype FROM pg_collation ORDER BY collname;` to discover collations in the target environment.
- Treat `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).
- Leverage the `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.
© github · MIT · github/awesome-copilot