[firebase-br] "DO SUSPEND"

Gladiston Santana gladiston.santana em gmail.com
Quinta Setembro 21 16:12:25 -03 2023


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