Tempo de leitura: 2 minutos
Olá, no post de hoje iremos ver como executar query Embedded SQL(SQL integrado ou embutido) utilizando o comandos BeginSQL EndSQL no ADVPL.
Muitas vezes como forma de facilitar o desenvolvimento de querys no Protheus utilizamos o que chamamos de Embedded SQL, que são querys SQL embutidas no código ADVPL. Um dos comandos utilizados para isso é o BeginSQL EndSQL conforme veremos.
Sintaxe:
Exemplo básico de BeginSQL EndSQL:
BeginSQL Alias 'E2TEMP
SELECT
SE2.E2_NUM,
SE2.E2_PREFIXO
FROM
%table:SE2% SE2
WHERE
SE2.E2_FILIAL= %xfilial:SE2% AND
SE2.E2_NUM= %exp:cNum% AND
SE2.E2_EMISSAO BETWEEN %exp:cDATAINI% AND %exp:cDATAFIM%
SE2.%notDel% ORDER BY %Order:SE2%
EndSQL
Características dos comandos de instruções acima:
Exemplo dos comandos BeginSQL e EndSQL no ADVPL:
#include 'protheus.ch'
#include "tbiconn.ch"
/*{Protheus.doc} User Function PBESQL
(Essa função tem por finalidade mostrar a execução dos comandos BeginSQL e EndSQL)
@type Function
@author Adilio Costa
@since 08/11/2023
@version 12.1.2210
Acesse e se inscreva no Blog/Site ProtheusAdvpl para receber conteúdo:
www.protheusadvpl.com.br
Se inscreva no Canal do ProtheusAdvpl para receber vídeos:
https://wwww.youtube.com/protheusadvpl
Siga-nos no Instagram:
http://https://www.instagram.com/protheusadvpl
Siga a página do ProtheusAdvpl no Facebook:
https://www.facebook.com/protheusadvpl2
Conheça o Portal ProtheusAdvpl:
https://hotmart.com/pt-br/marketplace/produtos/portal-protheusadvpl/O10336806O
*/
//SQL no Protheus - Embedded SQL - PBESQL
User Function PBESQL()
Local nRegs := 0
Local cNum := "000004567"
Local cDataIni := "20230801"
Local cDataFim := "20230831"
//Construindo a consulta com BeginSQL EndSQL
BeginSQL Alias 'E2TEMP'
SELECT
SE2.E2_NUM,
SE2.E2_PREFIXO
FROM %table:SE2% SE2
WHERE
SE2.E2_FILIAL= %xfilial:SE2% AND
SE2.E2_NUM= %exp:cNum% AND
SE2.E2_EMISSAO BETWEEN %exp:cDataIni% AND %exp:cDataFim%
SE2.%notDel% ORDER BY %Order:SE2%
EndSQL
//Enquanto houver registros
While !E2TEMP->(EOF())
nRegs++
E2TEMP->(DBSkip())
EndDo
E2TEMP->(DBCloseArea())
MsgInfo("Foram processados "+cValToChar(nRegs)+" títulos.", "Atenção")
Return
Bem, finalizamos mais um post aqui no Blog/Site ProtheusAdvpl, espero que você tenha entendido. Qualquer dúvida deixe seu comentário ou nos mande um e-mail para adiliocosta@protheusadvpl.com.br.
Links de referências: