[firebase-br] [aps] for execute statement

Saulo Lima mcikey em uol.com.br
Sex Nov 5 09:14:29 -03 2004


Erivaldo,
    É isso mesmo, o meu problema é que eu não estava comparando o valor com 
null, mais com relação as aspas eu ja estava passando no parâmetro, dessa 
forma: SELECT * FROM EXEMPLO('''40'''), isso quando eu quero passar um 
valor, caso contrário e faria assim: SELECT * FROM EXEMPLO(NULL), e então o 
meu problema foi resolvido, graças a ajuda de Josauro S.J. 
<josauro em casasoft.inf.br>.

Grato pela atenção dada

Saulo
Programador
APS Informática
Recife - PE
www.apsinformatica.com.br

----- Original Message ----- 
From: "Edvaldo (bol)" <evgomes em bol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, November 04, 2004 11:12 AM
Subject: Re: [firebase-br] [aps] for execute statement


Saulo,

Fiz o teste aqui com a sua Stored Procedure e veja o que eu descobri:

Quando você tem um parâmetro do tipo Varchar, veja como tem que ser montado
a clausula.

LSQL = 'select codigoexterno,descricao from materiaprima';
if (EPRO_COD is not null) then
    LSQL = LSQL || ' where PRO_COD  = ''' || EPRO_COD||'''';

Obs.: Dois apóstrofos e não aspas duplas.


----- Original Message -----
From: "Saulo Lima" <mcikey em uol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, November 03, 2004 6:17 PM
Subject: [firebase-br] [aps] for execute statement


Olá pessoal,
    Estou tentando executar uma stored procedure e ele esta se comportando
de maneira estranha, por isso eu elaborei um exemplo e coloquei aqui para
que alguém possa me ajudar, vamos ao caso:
    O que eu quero com essa SP é que eu possa trazer um produto específico
ou todos. Quando eu chamando a SP passando um valor diferente de 4 aspas
simples, significa que eu quero um produto específico, caso contrário quero
todos.
    Quando eu executo a SP passando o parâmetro diferente de 4 aspas simples
a SP  é executada perfeitamente, porém, quando faço o contrário a SP retorna
nada que na minha concepção era pra retornar tudo.
    Agora se eu retirar a linha 2 e 3 a SP retorna tudo, o que é que está
errado ? É alguma restrição do comando FOR EXECUTE STATEMENT ?

CREATE PROCEDURE EXEMPLO (EPRO_COD Varchar(7))
returns (PRO_COD  Varchar(5),
     PRO_DESC Varchar(60))
AS
     declare variable LSQL Varchar(500);
begin
/*1*/  LSQL = 'select PRO_COD, PRO_DESC from PRODUTOS ';
/*2*/  if (EPRO_COD <> '') then
/*3*/    LSQL = LSQL || 'where PRO_COD = ' || EPRO_COD;
/*4*/  for execute statement
/*5*/    LSQL
/*6*/  into
/*7*/    :PRO_COD,
/*8*/    :PRO_DESC
/*9*/  do
/*10*/ begin
/*11*/   suspend;
/*12*/ end

end

Grato pela atenção dada

Saulo
Programador
APS Informática
Recife - PE
www.apsinformatica.com.br


______________________________________________
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


______________________________________________
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 





Mais detalhes sobre a lista de discussão lista