Re: [firebase-br] "DO SUSPEND"

Mário Reis via lista <[email protected]>
Newsgroups gmane.comp.db.firebase.portuguese
Message-ID <CAF_dzrkOyijtbeHAf_CPQXnKX0-tsB7FFhndA4+=rsDOYo2PeA@mail.gmail.com>
Gladiston
Boas tardes
Não será exactamente assim! Estou a fazer testes e dentro do bloco o FB vê
a mesma tabela
a gente precisa ter como dar um alias à external database e outro a Internal
para fazer por exemplo *A.*externaldabase.Pessoas....
*B.*InternalDataBase.Pessoas
 (acho que já vi isto assim, não lembro mais se MySql ou se IBM DB2
FOR
   EXECUTE STATEMENT
      ( :sSql )
      ON EXTERNAL DATA SOURCE :sDB
      AS USER :IN_USER PASSWORD :IN_PWD -- just for example
      WITH *common* TRANSACTION -- note autonomous transaction
      INTO :PESSOA_ID, :TITULO_ID, :APELIDO, :NOME, :TIPO_ID etc..
Do Begin
-- Fazer *aqui dentro deste bloco* e o firebird
--tenta inserir na mesma database ou seja, na external database
--quando o que eu preciso é inserir na base de dados corrente
-- Seja como COMMON ou AUTONOMUS Transaction o resultado é o mesmo
-- tenta introduzir na tabela pessoas da external database!!!
 /*  INTERNAL DATA SOURCE */
INSERT INTO PESSOAS (
    PESSOA_ID,
    TITULO_ID,
    APELIDO,
    NOME,
    TIPO_ID)
Values(
    :PESSOA_ID,
    :TITULO_ID,
    :APELIDO,
    :NOME,
    :TIPO_ID)
end
Não sei ainda como resolver. Se criar uma nova Procedure de onde irei
chamar esta e então quando voltar à primeira, fazer o INSERT.
Todavia penso que vai ser um processo muito mais pesado digo demorado sem
falar do trabalho (o copy paste) dos parâmetros hão-de ajudar!
Talvez?!

Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.


Gladiston Santana <[email protected]> escreveu no dia sexta,
22/09/2023 à(s) 14:36:

> Isso mesmo!
> Ou antes do insert modificar os valores recebidos, recalcular e só então
> aplicar o insert.
>
> Em qui., 21 de set. de 2023 às 21:51, Mário Reis <[email protected]>
> escreveu:
>
>> Se não tem  outra forma de ir buscar dados a uma DB externa sem o
>> "execute statement" o "For" vai fazer n' vezes tantas quantas verificarem a
>> condição, certo? Então com o recurso a um Begin e antes do End posso fazer
>> igual n⁰ insert INTO minha tabela.
>> Compreendi bem? Obrigado
>>
>> A quinta, 21/09/2023, 19:14, Gladiston Santana <
>> [email protected]> escreveu:
>>
>>> Saudações além-mar Mário,
>>>
>>> O suspend retorna uma linha de dados conforme o RETURNS indicado no
>>> cabeçalho da procedure, então se você fizer uma procedure assim:
>>> CREATE or alter PROCEDURE SP_ABOUT
>>> RETURNS (
>>>     NOME varchar(120),
>>>     EMAIL varchar(255)
>>>     )
>>> AS
>>> BEGIN
>>>   NOME  = 'GLADISTON SANTANA';
>>>   EMAIL = 'gladiston.santana [em] gmail.com';
>>>   SUSPEND;
>>> END
>>>
>>> Se fizer  SELECT * FROM SP_ABOUT irá retornar uma linha contendo NOME e
>>> EMAIL, mas se voce apenas comentar o SUSPEND não irá retornar nada!
>>> Quando voce usar um FOR...SELECT...DO, você esta experimentando ler uma
>>> linha por vez do seu select, muita gente abriria após o DO um begin...end e
>>> só faria o SUSPEND nas linhas que desejam ser retornadas, quando o camarada
>>> não poe nenhum BEGIN/END e já faz um SUSPEND ele intenciona retornar todos.
>>> O problema com o 'execute statement' é que a query deve ter os mesmos
>>> parâmetros de entrada (select....) e saida( into xxx) e ainda por cima
>>> corresponder a cada RETURNS do cabeçalho da procedure. Quanto mais campos
>>> indicar, maiores as chances de errar. Quando eu faço o que você está
>>> fazendo, eu idento linha-a-linha e confiro as correspondências no INTO e
>>> RETURNS pq é complicado enxergar erro de sintaxe na sequência.
>>>
>>> []´s
>>>
>>
>
> --
> Gladiston Santana
> Escritório: 4787-3122 Ramal 228
> Cel Tim/WhatsApp: (11)95144-8188
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.