Boa tarde Estou tentando usar beginsql mas deparei com uma duvida na inclusao de case na query feita desta forma, alguém tem algum exemplo de como usar?
Boa tarde Estou tentando usar beginsql mas deparei com uma duvida na inclusao de case na query feita desta forma, alguém tem algum exemplo de como usar?
Boa tarde Denis,
Pelo que compreendi seria um exemplo de CASE/WHEN/ELSE em uma query, usando o Embedded SQL.
Criei um exemplo bem simples, mas já adianto que nada muda, a sintaxe é a mesma:
#include 'protheus.ch'
//-------------------------------------------------------------------
/*/{Protheus.doc} caseWhenElse
Função de exemplo de CASE dentro de BeginSQL
@sample U_caseWhenElse()
@author Daniel Mendes
@since 21/08/2019
@version 1.0
/*/
//-------------------------------------------------------------------
user function caseWhenElse()
local cAlias as char
//Abro o ambiente
rpcSetEnv('99', '01')
//Gero um alias aleatório para a query
cAlias := getNextAlias()
//Exemplo de query com CASE
BeginSQL alias cAlias
SELECT CASE
WHEN ED_FILIAL = ' ' THEN 'Filial comportilhada'
WHEN ED_FILIAL = '01' THEN 'Filia exclusiva para 01'
WHEN ED_FILIAL = '02' THEN 'Filia exclusiva para 02'
ELSE 'Filial exclusiva para ' || ED_FILIAL
END FIL_TYPE
FROM %table:SED% SED
WHERE SED.%notDel%
EndSQL
//While da query, apenas exibindo em console
while !(cAlias)->(Eof())
ConOut((cAlias)->FIL_TYPE)
(cAlias)->(dbSkip())
enddo
//Fecho a query após o uso
(cAlias)->(dbCloseArea())
//Fecho o ambiente
rpcClearEnv()
return nil
Aqui a documentação sobre o Embedded SQL:
@Daniel, muito obrigado por compartilhar. Ótimo exemplo.
— Maicon Macedo 28 de Oct de 2019
Boa tarde Denis, seria o case/when/else SQL?
— Daniel Mendes 21 de Aug de 2019