[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