Como Executar Queries com os Comandos BeginSQL e EndSQL

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:

BeginSQL “SUA_TABELA”
 
//Comandos SQL
 
EndSQL 
 

Exemplo básico de BeginSQL e 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:

//Bibliotecas
#Include "Protheus.ch"
#INCLUDE "TBICONN.CH"
#INCLUDE "topconn.ch"
#include "TOTVS.CH"

/*/{Protheus.doc} fBegSQL
Exemplo da função GetLastQuery em ADVPL
@type function
@author Adilio Costa
@since 24/01/2023
@version 1.0
@?Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@?Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@?Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@?Conheça os Cursos e Formações do Protheus:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/

|Se esse conteúdo foi útil pra você nos ajude divulgando
ele e nossas redes sociais!!|
/*/
//SQL no Protheus - Embedded SQL - fGetLQry
User Function fBegSQL()
	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())

	FWAlertInfo("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:

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.