Como Utilizar BeginSQL EndSQL no ADVPL

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 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:

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