[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