RES: [firebase-br] [Stored Procedure] Erro de sintaxe

Jader Ricardo jader em caramuru.com
Seg Jul 4 16:22:09 -03 2005


Joelson,

Fiz o que você sugeriu, mas o erro mudou de linha, veja abaixo

 CREATE PROCEDURE SP_CONSULTA_CLIENTES (
    PECODIGO INTEGER,
    PENOME VARCHAR(50),
    PECIDADE VARCHAR(30))
RETURNS (
    PSCODIGO INTEGER,
    PSNOME VARCHAR(50),
    PSCIDADE VARCHAR(30))
AS
DECLARE VARIABLE STRSQL VARCHAR(100);
DECLARE VARIABLE CONT INTEGER;
BEGIN
  /* Iniciando variáveis */
  STRSQL = 'SELECT * FROM CLIENTES WHERE ';
  CONT = 0;

  /* Testando o primeiro atributo */
  IF (:PECODIGO IS NOT NULL) THEN
    BEGIN
      STRSQL = :STRSQL ||'CODIGO = ' || :PECODIGO;
      CONT = 1;
    END

  /* Testando o segundo atributo
     O número um serve para indicar ser vou ter que usar um AND */
  IF (:CONT = 1) AND (:PENOME IS NOT NULL) THEN   /* => Aparece o erro aqui,
aparentemente para a próxima linha de código após o end */
    BEGIN
      STRSQL = :STRSQL || 'AND NOME = ' || :PENOME;
      CONT = 1;
    END
  ELSE
    BEGIN
      IF (:PENOME IS NOT NULL) THEN
        BEGIN
          STRSQL = :STRSQL || 'NOME = ' || :PENOME;
          CONT = 1;
        END
    END

  /* Testando o terceiro atributo
   O número um serve para indicar ser vou ter que usar um AND */
  IF (:CONT = 1) AND (:PECIDADE IS NOT NULL) THEN
    BEGIN
      STRSQL = :STRSQL || 'AND CIDADE = ' || :PECIDADE;
      CONT = 1;
    END
  ELSE
    BEGIN
      IF (:PECIDADE IS NOT NULL) THEN
        BEGIN
          STRSQL = :STRSQL || 'CIDADE = ' || :PECIDADE;
        END
    END

  /* Executar o select */
  FOR EXECUTE STATEMENT :STRSQL
  INTO :PSCODIGO,:PSNOME,:PSCIDADE
  DO
  BEGIN
    SUSPEND;
  END
END



-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Joelson - Souzamark
Enviada em: segunda-feira, 4 de julho de 2005 16:11
Para: FireBase
Assunto: Re: [firebase-br] [Stored Procedure] Erro de sintaxe

Caro Jader

tente tirar o ponto e virgula após o END

IF (:PECODIGO IS NOT NULL) THEN
    BEGIN
      STRSQL = :STRSQL ||'CODIGO = ' || :PECODIGO;
      CONT = 1;
    END; /* => => => Aqui sempre dá o erro, porquê ? */


sem mais
Joelson 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista