oracle-plsql-ptbr — v2.0.0
PL/SQL Oracle 19c seguindo Trivadis Guidelines 4.4. Foco em código correto, seguro e performático.
Desenvolvido por: Maxwell da Silva Oliveira — M&S do Brasil LTDA
Áreas cobertas
| Área |
Reference |
Assets |
| EBR (zero downtime) |
references/ebr-editioning-views.md |
(conceitual) |
| PL/SQL |
references/ → oracle-trivadis-ptbr |
package_header.sql, package_body.sql, exception_template.sql, bulk_processing_template.sql, dml_alternatives_to_plsql.sql, nocopy_for_lobs.sql, clob_blob_operations.sql, logger_integration.sql, triggers_canonicos.sql |
Referência cruzada de nomenclatura: padrão Trivadis 4.4 completo (prefixos, estrutura, naming PT-BR) está em oracle-trivadis-ptbr. Esta skill aplica as convenções automaticamente — carregue oracle-trivadis-ptbr quando o foco for revisão explícita de padrão.
Quando ativar
- Criação ou refatoração de packages, procedures, functions, types
- BULK COLLECT + FORALL (loop PL/SQL em volume)
- NOCOPY para BLOB/CLOB > 100KB ou collections grandes em IN OUT
- EXECUTE IMMEDIATE com bind variables (SQL dinâmico)
- MERGE INTO como substituto de loop SELECT/INSERT/UPDATE
- LOBs: leitura em chunks, Base64, SHA-256, DBMS_LOB
- Compound trigger (auditoria, surrogate keys, cross-edition)
- EBR: editioning views, cross-edition triggers, deploy zero downtime
- Logger (OraOpenSource): log_error, log_warn, log_info, log_permanent
- Qualquer menção a AUTONOMOUS_TRANSACTION, PRAGMA, DBMS_ERRLOG
Não usar para: APEX pages/regions/items, ORDS endpoints/modules, DBA ops (sessão/lock/tablespace), tuning de queries.
Princípios canônicos
- SQL puro antes de PL/SQL. Se MERGE, INSERT SELECT ou UPDATE com CASE resolve — use. PL/SQL só quando há lógica de negócio por linha, chamadas externas ou coordenação complexa.
- Bind variables sempre. Em EXECUTE IMMEDIATE use
USING. Identificadores dinâmicos → DBMS_ASSERT.simple_sql_name.
- Bulk em loops.
BULK COLLECT + FORALL. Com LIMIT para volumes > 100k. DBMS_ERRLOG quando cabe DML único.
- Exception com contexto.
lc_nome_unidade CONSTANT VARCHAR2(60) em toda procedure pública. Re-raise via raise_application_error.
- ROLLBACK explícito antes do re-raise em handlers com DML. Caller decide o commit.
- Logger em vez de DBMS_OUTPUT em produção.
- Privilégios mínimos. Schema owner faz DDL; app user faz DML.
- Auditabilidade.
criado_em, criado_por, atualizado_em, atualizado_por em tabelas de domínio.
- NOCOPY para LOB/collection grande em IN OUT/OUT.
- Triggers não contêm regra de negócio. Auditoria, surrogate key, cross-edition EBR.
- Sempre compound trigger quando trigger é necessário.
- EBR para zero downtime. Editioning views + editions + cross-edition triggers.
Fluxo de uso
Criar código: SQL puro resolve? → dml_alternatives_to_plsql.sql. Não → clone template da área → adapte naming Trivadis → use Logger.
Revisar código: Princípio #0 primeiro. Depois antipatterns: concatenação em SQL dinâmico, loop linha-a-linha, WHEN OTHERS THEN NULL, DBMS_OUTPUT em produção, falta NOCOPY em LOB IN OUT. Para naming explícito → oracle-trivadis-ptbr.
Referências cruzadas
| Precisa de |
Skill |
| Naming, prefixos, checklist Trivadis |
oracle-trivadis-ptbr |
| APEX page process, dynamic action, IG |
oracle-apex-ptbr |
| ORDS handler, módulo REST |
oracle-ords-ptbr |
| Sessão, lock, flashback, tablespace |
oracle-dba-ptbr |
| Explain plan, AWR, index, tuning |
oracle-tuning-ptbr |
1---2name: oracle-plsql-ptbr3description: PL/SQL Oracle 19c — packages, procedures, functions, types, cursores, LOBs e EBR. ATIVE em BULK COLLECT, FORALL, NOCOPY, EXECUTE IMMEDIATE, MERGE INTO, compound trigger, editioning view, cross-edition trigger, CLOB/BLOB, Logger, exception handler, DML alternatives. Frases ambíguas com contexto PL/SQL — "criar package", "refatorar procedure", "processar LOB", "zero downtime deploy", "loop tá lento", "trigger de auditoria". NAO ATIVE em páginas APEX, endpoints ORDS, DBA operacional (sessões/locks/tablespace), tuning de queries (explain plan/AWR/ASH). Aplica naming Trivadis automaticamente — para revisão explícita do padrão use oracle-trivadis-ptbr. Templates em assets/.4---56# oracle-plsql-ptbr — v2.0.078PL/SQL Oracle 19c seguindo Trivadis Guidelines 4.4. Foco em código correto, seguro e performático.910**Desenvolvido por:** Maxwell da Silva Oliveira — [M&S do Brasil LTDA](https://msbrasil.inf.br)1112## Áreas cobertas1314| Área | Reference | Assets |15|---|---|---|16| **EBR (zero downtime)** | `references/ebr-editioning-views.md` | (conceitual) |17| **PL/SQL** | `references/` → **oracle-trivadis-ptbr** | `package_header.sql`, `package_body.sql`, `exception_template.sql`, `bulk_processing_template.sql`, `dml_alternatives_to_plsql.sql`, `nocopy_for_lobs.sql`, `clob_blob_operations.sql`, `logger_integration.sql`, `triggers_canonicos.sql` |1819> **Referência cruzada de nomenclatura:** padrão Trivadis 4.4 completo (prefixos, estrutura, naming PT-BR) está em **oracle-trivadis-ptbr**. Esta skill aplica as convenções automaticamente — carregue `oracle-trivadis-ptbr` quando o foco for revisão explícita de padrão.2021## Quando ativar2223- Criação ou refatoração de packages, procedures, functions, types24- BULK COLLECT + FORALL (loop PL/SQL em volume)25- NOCOPY para BLOB/CLOB > 100KB ou collections grandes em IN OUT26- EXECUTE IMMEDIATE com bind variables (SQL dinâmico)27- MERGE INTO como substituto de loop SELECT/INSERT/UPDATE28- LOBs: leitura em chunks, Base64, SHA-256, DBMS_LOB29- Compound trigger (auditoria, surrogate keys, cross-edition)30- EBR: editioning views, cross-edition triggers, deploy zero downtime31- Logger (OraOpenSource): log_error, log_warn, log_info, log_permanent32- Qualquer menção a AUTONOMOUS_TRANSACTION, PRAGMA, DBMS_ERRLOG3334**Não usar** para: APEX pages/regions/items, ORDS endpoints/modules, DBA ops (sessão/lock/tablespace), tuning de queries.3536## Princípios canônicos37380. **SQL puro antes de PL/SQL.** Se MERGE, INSERT SELECT ou UPDATE com CASE resolve — use. PL/SQL só quando há lógica de negócio por linha, chamadas externas ou coordenação complexa.391. **Bind variables sempre.** Em EXECUTE IMMEDIATE use `USING`. Identificadores dinâmicos → `DBMS_ASSERT.simple_sql_name`.402. **Bulk em loops.** `BULK COLLECT` + `FORALL`. Com `LIMIT` para volumes > 100k. `DBMS_ERRLOG` quando cabe DML único.413. **Exception com contexto.** `lc_nome_unidade CONSTANT VARCHAR2(60)` em toda procedure pública. Re-raise via `raise_application_error`.424. **ROLLBACK explícito** antes do re-raise em handlers com DML. Caller decide o commit.435. **Logger em vez de DBMS_OUTPUT** em produção.446. **Privilégios mínimos.** Schema owner faz DDL; app user faz DML.457. **Auditabilidade.** `criado_em`, `criado_por`, `atualizado_em`, `atualizado_por` em tabelas de domínio.468. **NOCOPY para LOB/collection grande** em IN OUT/OUT.479. **Triggers não contêm regra de negócio.** Auditoria, surrogate key, cross-edition EBR.4810. **Sempre compound trigger** quando trigger é necessário.4911. **EBR para zero downtime.** Editioning views + editions + cross-edition triggers.5051## Fluxo de uso5253**Criar código:** SQL puro resolve? → `dml_alternatives_to_plsql.sql`. Não → clone template da área → adapte naming Trivadis → use Logger.5455**Revisar código:** Princípio #0 primeiro. Depois antipatterns: concatenação em SQL dinâmico, loop linha-a-linha, `WHEN OTHERS THEN NULL`, `DBMS_OUTPUT` em produção, falta NOCOPY em LOB IN OUT. Para naming explícito → **oracle-trivadis-ptbr**.5657## Referências cruzadas5859| Precisa de | Skill |60|---|---|61| Naming, prefixos, checklist Trivadis | **oracle-trivadis-ptbr** |62| APEX page process, dynamic action, IG | **oracle-apex-ptbr** |63| ORDS handler, módulo REST | **oracle-ords-ptbr** |64| Sessão, lock, flashback, tablespace | **oracle-dba-ptbr** |65| Explain plan, AWR, index, tuning | **oracle-tuning-ptbr** |