BeginSql AliasInicia o bloco e define o alias do cursor. O alias não pode estar aberto; prefira um valor obtido com GetNextAlias().
AdvPL GuiaBeginSql Alias cAlias ... EndSqlEscreva consultas SQL legíveis diretamente no fonte AdvPL, usando substituições do pré-compilador e conversão declarativa de tipos.
Embedded SQL evita a concatenação manual de uma consulta em várias strings. O bloco entre BeginSql e EndSql é processado pelo pré-compilador AdvPL: trechos comuns seguem literalmente para a consulta e expressões delimitadas por porcentagens são transformadas em nomes físicos, filtros, valores e ordens compatíveis com o Protheus. A execução abre um cursor no alias informado e, por padrão, a consulta passa automaticamente por ChangeQuery().
BeginSql Alias cAlias ... EndSqlBeginSql AliasInicia o bloco e define o alias do cursor. O alias não pode estar aberto; prefira um valor obtido com GetNextAlias().
column ... as Date | Logical | NumericDeclara conversões de campos do resultado. O pré-compilador gera o tratamento equivalente a TcSetField().
%table:ALIAS%Resolve o nome físico da tabela por meio de RetSqlName().
%xfilial:ALIAS%Insere o valor de filial adequado à tabela informada.
%notDel%Gera o filtro de registro não excluído para D_E_L_E_T_. Deve estar associado ao alias SQL correto.
%exp:expressão%Avalia variável ou expressão AdvPL em tempo de execução e a converte para uso na consulta. Aceita valores caractere, data, numérico ou lógico.
%Order:ALIAS,nOrdem%Converte a expressão da ordem AdvPL em uma cláusula SQL por meio de SqlOrder().
%temp-table:cNome%Insere na consulta o nome de uma tabela temporária armazenado em variável.
%noparser%Impede a passagem automática por ChangeQuery(). Use somente quando a perda de portabilidade for intencional e comprovada.
EndSqlFinaliza o bloco e dispara a abertura do cursor. Em ambientes antigos pode precisar estar alinhado à esquerda.
#Include "TOTVS.ch"
#Include "TopConn.ch"
User Function ExEmbeddedSql()
Local cAlias := GetNextAlias()
Local cNome := "CLIENTE TESTE"
BeginSql Alias cAlias
SELECT A1_COD,
A1_LOJA,
A1_NOME
FROM %table:SA1% SA1
WHERE A1_FILIAL = %xfilial:SA1%
AND A1_NOME = %exp:cNome%
AND SA1.%notDel%
ORDER BY %Order:SA1,1%
EndSql
While !(cAlias)->(Eof())
ConOut((cAlias)->A1_COD + " - " + (cAlias)->A1_NOME)
(cAlias)->(DbSkip())
EndDo
(cAlias)->(DbCloseArea())
ReturnO pré-compilador resolve tabela, filial, valor, exclusão lógica e ordem; o cursor é percorrido para frente e fechado explicitamente.
Local cAlias := GetNextAlias()
Local aInfo := {}
BeginSql Alias cAlias
column E2_EMISSAO as Date
column E2_VALOR as Numeric(16, 2)
SELECT E2_EMISSAO, E2_VALOR
FROM %table:SE2% SE2
WHERE E2_FILIAL = %xfilial:SE2%
AND SE2.%notDel%
EndSql
aInfo := GetLastQuery()
ConOut("Tempo de abertura: " + cValToChar(aInfo[5]))
(cAlias)->(DbCloseArea())Os campos chegam como data e número; GetLastQuery() informa a consulta efetivamente executada e o tempo de abertura do cursor.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de titularidade da TOTVS S.A. AdvPL é uma linguagem de programação desenvolvida pela TOTVS. O AdvPL Guia é um projeto independente, sem vínculo, representação, patrocínio ou afiliação com a TOTVS S.A., suas franquias ou representantes.