← ClaudeAtlas

advpl-embedded-sqllisted

SQL embarcado em ADVPL/TLPP — BeginSql/EndSql (preferido), TCQuery (legacy), TCSqlExec (DML), MPSysOpenQuery (autosetfield). Macros obrigatórias %notDel%, %xfilial%, %table%, %exp%, %Order%, %top%, %LIMIT%. Use ao gerar/editar query SQL embarcada, refatorar TCQuery+RetSqlName pra BeginSql, ou revisar regras PERF-001/002/003 e SEC-001 do lint.
JoniPraia/plugadvpl · ★ 12 · API & Backend · score 66
Install: claude install-skill JoniPraia/plugadvpl
# advpl-embedded-sql — SQL nativo em ADVPL/TLPP ADVPL/TLPP suporta SQL embarcado direto no fonte com **substituição por macros** que garantem multi-empresa, multi-filial, anti-SQL-injection e portabilidade entre DBMS (Oracle, SQL Server, Postgres, DB2 via DBAccess). Famílias de execução SQL no Protheus: | Comando / Função | Tipo | Use quando | |-----------------------|----------|---------------------------------------------------------| | **`BeginSql/EndSql`** | SELECT | **Default pra novo código**, suporta macros | | `TCQuery` | SELECT | Legacy. Equivalente ao BeginSql mas string crua | | `TCGenQry` | SELECT | Internamente usado por `TCQuery`; raramente direto | | **`MPSysOpenQuery`** | SELECT | Como TCQuery mas com `TCSetField` automático dos campos dicionarizados | | **`TCSqlExec`** | DML/DDL | UPDATE/DELETE/INSERT/CREATE direto no DBMS | ## Quando usar - Edit/criação de qualquer query SQL no fonte ADVPL. - Refator de SQL legado (`TCQuery` + concatenação → `BeginSql`). - Revisão de regra `PERF-001`/`PERF-002`/`PERF-003` ou `SEC-001` do lint. - DML em massa (atualização cross-tabela) — usar `TCSqlExec` em vez de loop ADVPL com `RecLock`. - Antes de testar performance — sem macros, queries dão problema em produção multi-empresa. ## Macros obrigatórias do `BeginSql` | Macro | O que faz