[firebase-br] "DO SUSPEND"

Mário Reis mariodosreyx em gmail.com
Quinta Setembro 21 21:51:23 -03 2023


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
>


Mais detalhes sobre a lista de discussão lista