[firebase-br] "DO SUSPEND"

Gladiston Santana gladiston.santana em gmail.com
Sexta Setembro 22 11:34:48 -03 2023


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 <mariodosreyx em gmail.com>
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 <
> gladiston.santana em gmail.com> 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


Mais detalhes sobre a lista de discussão lista