[firebase-br] "DO SUSPEND"

Gladiston Santana gladiston.santana em gmail.com
Quinta Setembro 28 09:50:05 -03 2023


Saudações Mario,

É tranquilo o usufruto de database externo, seja para insert, update,
delete, procedures, ...
Eu tenho tabela de imagens de produtos, xml de notas fiscais,
auditorias,... que não ficam no mesmo database mas são populadas e
consultadas a todo instante.
No caso de auditorias, eu tenho até um 'create table'  quando contextos
novos aparecem.
Uma recomendação nesses momentos é crie uma tabela 'footable' com o campo
'foocampo'  e crie um exemplo funcional menor,  que retorne o que foi
incluido e também o statement executado, mesmo que dê erro, o statement
executado precisa ser consultado para saber se houve problemas de
concatenação, aspas,...ou qualquer coisa que possa provocar erro de sintaxe.
CREATE PROCEDURE CONSULTA_EXTERNA(p_param1 varchar(30))
RETURNS(
  ret_campo1 varchar(30),
  ret_psql  varchar(4096))
begin
  (...)
  ret_sql='INSERT INTO TABELA(...) VALUES (....) RETURNING CAMPO_ID';
  -- o suspend abaixo me retorna qual é o sql statement que vou executar
antes do execute statement
  -- se der problema, ao menos vou saber qual foi o statement que chegou do
outro lado
  -- quando  o psql estiver completo e na versão final, essa linha será
comentada
  suspend;  -- suspend de analise do ret_psql
  FOR EXECUTE STATEMENT :ret_psql
          ON EXTERNAL :RET_CONN_STRING
          AS USER :RET_CONN_USER
          PASSWORD :RET_CONN_PASSWORD
          ROLE :RET_CONN_ROLE into :ret_campo1 DO
  begin
    suspend; <-- retorna para o ret_campo1 e retorna mais 1 linha
  end
end

Depois do teste funcional estar OK, vai gradativamente aumentando os campos
de retorno e refazendo o teste até chegar onde vc quer e quando chegar na
versão final então comenta o suspend de analise do ret_psql.
Os execute statement tem como maior problema saber como a string chegou do
outro lado, se soubermos que chegou bem, o restante é cuidar que os pares
de 'returning' que estiver no statement estejam alinhados com o into
:campo1, :campo2 do laço for.

Aqui no Brasil temos um ditado popular que diz 'o que não nos mata, apenas
nos deixa mais forte', então seja resiliente.
E se achar que precisa de ajuda, tem os serviços do Carlos Cantú e de
outros colegas que podem ser contratados por 1h e resolver tal problema
para você.

[]´s


Mais detalhes sobre a lista de discussão lista