%table:ALIAS%Resolve o nome físico da tabela Protheus correspondente ao alias informado.
AdvPL GuiaBeginSql Alias <cAlias> ... EndSqlEscreva consultas SQL legíveis diretamente no fonte AdvPL, usando substituições do pré-compilador, filtros de filial e exclusão lógica e conversão declarativa de tipos.
Embedded SQL permite escrever o SELECT diretamente entre BeginSql e EndSql. Durante a compilação e a execução, expressões especiais delimitadas por % são transformadas para integrar a consulta ao Protheus e ao DBAccess. Entre os recursos documentados estão %table, %xfilial, %exp, %notDel, %Order, column ... as Date/Logic/Numeric e %noparser%. Por padrão, a consulta passa por ChangeQuery(); o alias aberto deve ser fechado ao final do processamento.
BeginSql Alias <cAlias> ... EndSql%table:ALIAS%Resolve o nome físico da tabela Protheus correspondente ao alias informado.
%xfilial:ALIAS%Resolve a filial corrente adequada à tabela informada.
%exp:expressão%Insere na consulta o valor de uma variável ou expressão AdvPL compatível.
%notDel%Gera a condição de exclusão lógica baseada em D_E_L_E_T_.
%Order:ALIAS%Converte a expressão de índice AdvPL para uma cláusula SQL de ordenação.
column <campo> as <tipo>Declara a conversão de campos Date, Logic ou Numeric do result set para tipos AdvPL.
%noparser%Impede que a consulta passe por ChangeQuery() antes de ser enviada ao banco. Use apenas quando houver motivo técnico claro.
Abre o cursor da consulta no alias indicado em BeginSql. O result set deve ser percorrido como uma WorkArea de consulta e fechado com DbCloseArea() quando não for mais necessário.
#Include "TOTVS.ch"
User Function ExEmbedded()
Local cAlias := GetNextAlias()
Local cCodigo := "000001"
// Embedded SQL evita concatenar trechos de texto para formar o SELECT.
BeginSql Alias cAlias
SELECT A1_COD, A1_NOME
FROM %table:SA1% SA1
WHERE A1_FILIAL = %xfilial:SA1%
AND A1_COD = %exp:cCodigo%
AND SA1.%notDel%
EndSql
While !(cAlias)->(Eof())
ConOut((cAlias)->A1_COD + " - " + (cAlias)->A1_NOME)
(cAlias)->(DbSkip())
EndDo
// O cursor aberto pelo BeginSql deve ser fechado ao final.
(cAlias)->(DbCloseArea())
ReturnA consulta resolve a tabela física, filial, valor de código e exclusão lógica sem montar manualmente uma string SQL.
#Include "TOTVS.ch"
User Function ExEmbeddedData()
Local cAlias := GetNextAlias()
Local cPrefixo := "NF"
BeginSql Alias cAlias
column E2_EMISSAO as Date
SELECT E2_PREFIXO, E2_NUM, E2_EMISSAO
FROM %table:SE2% SE2
WHERE E2_FILIAL = %xfilial:SE2%
AND E2_PREFIXO = %exp:cPrefixo%
AND SE2.%notDel%
EndSql
While !(cAlias)->(Eof())
// E2_EMISSAO já é disponibilizado como data AdvPL.
ConOut((cAlias)->E2_PREFIXO + " - " + DToC((cAlias)->E2_EMISSAO))
(cAlias)->(DbSkip())
EndDo
(cAlias)->(DbCloseArea())
ReturnA declaração column substitui o tratamento manual posterior do tipo do campo retornado.
#Include "TOTVS.ch"
User Function ExLastQuery()
Local cAlias := GetNextAlias()
Local aInfo := {}
BeginSql Alias cAlias
SELECT A1_COD, A1_NOME
FROM %table:SA1% SA1
WHERE A1_FILIAL = %xfilial:SA1%
AND SA1.%notDel%
EndSql
// GetLastQuery() permite inspecionar a consulta efetivamente aberta.
aInfo := GetLastQuery()
ConOut(aInfo[2]) // SQL executado
(cAlias)->(DbCloseArea())
ReturnGetLastQuery()[2] permite observar a string SQL executada; o retorno completo também contém alias, conversões, indicação de parser e tempo de abertura do cursor.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de seus titulares. O AdvPL Guia é independente e utiliza citações limitadas, atribuídas e justificadas por finalidade educativa. Consulte os Termos de Uso. Termos de Uso
Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.