Re: [firebase-br] SQL Dinâmico - Acho que resolve...

Danilo Rogério danilorsa_betta em yahoo.com.br
Sáb Mar 19 11:45:19 -03 2005


Pessoal, em Oracle uso o Decode para tipos de parâmetros, que quando estão nulos, tenho que trazer todos da tabela...
 
Uma pergunta antes: POSSO USAR COALESCE NA CLAUSULA WHERE??? Se puder, monte seu select da seguinte maneira:
 
SELECT CODMAT, SUM(ENTRADA), SUM(SAIDA)
   FROM TB_ESTOQUE
WHERE DATA BETWEEN :DATA_INICIAL AND :DATA_FINAL
     AND  COD_MAT = COALESCE(:COD_MAT,COD_MAT) 
GROUP BY COD_MAT



Henrique Sinapse <suporte em sinapseinformatica.com.br> wrote:
Caro Eliomar,

Ainda não testei pelo DELPHI, estou no Editor SQL do IbExpert. Estou executando o seguinte código SELECT * FROM SP_SALDO_PRODUTO('0252-0017-8',:pDATA1,:pDATA2). Nem se colocar um valor no parâmetro CODMAT funciona.

Segundo o colega Rubem me informou, o problema está na concatenação, pois estava concatenando um valor do tipo DATA em uma string. Então então usei a função CAST para converter o valor da variável para STRING. Veja abaixo!

vSQL='Select CODMAT,SUM(ENTRADA),SUM(SAIDA) From TB_ESTOQUE';
vSQL=vSQL||' Where (DATA BETWEEN '||CAST(:DATA_INICIAL as VARCHAR(10))||' and '||CAST(:DATA_FINAL as VARCHAR(10))||') ';

if (Not CODMAT IS NULL) then
vSQL=vSQL||' and CODMAT='||:CODMAT;
vSQL=vSQL||' Group By CODMAT';

For Execute Statement :vSQL
Into rCODMAT,vTOTENTRADAS,vTOTSAIDAS
Do
Begin
rSALDO=vTOTENTRADAS-vTOTSAIDAS;
suspend;
End


Mas ainda continua dando o mesmo erro. Ouverflow occured during data type conversion. Conversion error from string "1972".

Eu tentei executar pelo DELPHI e também dá o mesmo erro. O que eu posso está fazendo de errado?

Carlos Henrique Meireles
Suporte de Sistemas
Tel.: 21 - 8115-1584 


----- Original Message ----- 
From: Eliomar 
To: FireBase 
Sent: Saturday, March 19, 2005 8:51 AM
Subject: Re: [firebase-br] SQL Dinâmico


Quando vc passa o CODMAT como null
a SP dá certo?

E lá no delphi como vc esta passando os
parametros?

Tem que passar com o QuotedStr pois
se trata de uma Varchar.

Entendeu?

Agradecido.
Eliomar,
ICQ - 167715482
Soft-Data Softwares Administrativos
hptt://www.promediconet.com.br


------------- Segue mensagem original! -------------

De: "Henrique Sinapse" 
Data: Fri, 18 Mar 2005 18:38:10 -0300
Para: "FireBase" 

Assunto: [firebase-br] SQL Dinâmico

Gente,

Estou com um problema que ao meu ver é bobo, mas não estou conseguindo resolver. 

Eu tenho que montar um procedure onde eu extraio o saldo de um material no estoque dentro de um determinado período. Só que eu queria que quando o parâmetro código do material não fosse informado, a procedure automaticamente trouxesse o saldo de todos os materiais. Mas quando eu execute a procedure dá o seguinte erro:

Ouverflow ocurred during data type conversion. Conversion erro from string "1996".

create procedure SP_SALDO_PRODUTO(
CODMAT VARCHAR(12),
DATA_INICIAL DATE,
DATA_FINAL DATE)
returns (
rCODMAT VARCHAR(12),
rSALDO NUMERIC(10,2))
as
declare variable vSQL VARCHAR(200);
declare variable vTOTENTRADAS NUMERIC(10,2);
declare variable vTOTSAIDAS NUMERIC(10,2);
begin
vSQL='Select CODMAT,SUM(ENTRADA),SUM(SAIDA) From TB_ESTOQUE';
vSQL=vSQL||' Where (DATA BETWEEN '||:DATA_INICIAL||' and '||:DATA_FINAL||')';
if (Not CODMAT IS NULL) then
vSQL=vSQL||' and CODMAT='||:CODMAT;
vSQL=vSQL||' Group By CODMAT';

For Execute Statement :vSQL
Into rCODMAT,vTOTENTRADAS,vTOTSAIDAS
Do
Begin
rSALDO=vTOTENTRADAS-vTOTSAIDAS;
suspend;
End

end

Alguém poderia me ajuda?

Carlos Henrique Meireles
Suporte de Sistemas
Tel.: 21 - 8115-1584 


______________________________________________
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
______________________________________________
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

		
---------------------------------
Yahoo! Mail - Com 250MB de espaço.  Abra sua conta!


Mais detalhes sobre a lista de discussão lista