[firebase-br] ZeosDBO e Execute block funciona?
Gladiston Santana
gladiston em vidy.com.br
Segunda Outubro 25 23:40:03 -03 2021
Primeiro eu tentei:
query1.sql.text:='
execute block (
P_UUID_AGENDA varchar(36)=? ,
P_UUID_COLABORADOR varchar(36)=?,
P_DT_NUTIL date=? ,
P_DESCRICAO varchar(4096)=? )
as
begin
if (not exists(select * from AGENDA_NUTIL
where UUID_COLABORADOR=:P_UUID_COLABORADOR
and DT_NUTIL=:P_DT_NUTIL)) then
begin
update or insert into AGENDA_NUTIL (
UUID_AGENDA, UUID_COLABORADOR, DT_NUTIL, DESCRICAO)
values (
:P_UUID_AGENDA, :P_UUID_COLABORADOR, :P_DT_NUTIL, :P_DESCRICAO)
matching (UUID_AGENDA);
end
end
';
query1 .prepare;
Então descobri que o Zeos prepara sem erros, mas não executa com ExecSQL
dando erro na primeira linha. Código tá perfeito no IBExpert e é a forma
que uso no Firedac. Daí chutei o pau da barraca e construi a query ficando
assim:
execute block as
declare variable P_UUID_AGENDA varchar(36)='1';
declare variable P_UUID_COLABORADOR varchar(36)='0';
declare variable P_DT_NUTIL date='06.04.2012';
declare variable P_DESCRICAO varchar(4096)='Imenda de feriado 06/04 sexta
feira santa';
begin
if (not exists(select * from AGENDA_NUTIL
where UUID_COLABORADOR=:P_UUID_COLABORADOR
and DT_NUTIL=:P_DT_NUTIL)) then
begin
update or insert into AGENDA_NUTIL (
UUID_AGENDA, UUID_COLABORADOR, DT_NUTIL, DESCRICAO)
values (
:P_UUID_AGENDA, :P_UUID_COLABORADOR, :P_DT_NUTIL, :P_DESCRICAO)
matching (UUID_AGENDA);
end
end
Nada de errado nela, o IBExpert executa normalmente, mas o ZeosDBO falha
dizendo que tem erro na primeira linha.
Alguém ai já conseguiu executar execute block com o Zeos? Tô começando a
achar que ele não vai funcionar.
Mais detalhes sobre a lista de discussão lista