[firebase-br] stored procedures não estão funcionando
Sandro Souza
escovadordebits em gmail.com
Ter Nov 24 15:27:17 -03 2009
Bom dia/tarde Reijânio.
Grande Reijânio, pelo que eu entendi, o parâmetro "IDPROD" da stored
procedure "ATLZ_PRECO" é o código do produto (VARCHAR(18)), mas você está
usando esse código de produto para pesquisar a tabela de preço pelo código
da mesma e não pelo código do produto, ou seja.
Onde estão:
1 - IF(EXISTS(SELECT * FROM PRECO_TABELA WHERE *CODIGO* = :IDPROD))THEN
......
2 - UPDATE PRECO_TABELA SET ..... WHERE (*CODIGO* = :IDPROD);
Deveriam ser:
1 - IF(EXISTS(SELECT * FROM PRECO_TABELA WHERE *IDPROD* = :IDPROD))THEN
......
2 - UPDATE PRECO_TABELA SET ..... WHERE (*IDPROD* = :IDPROD);
E da forma que estão, realmente nunca serão encontrados os produtos, pois
está comparando o código do produto (IDPROD) com o código da tabela de preço
(CODIGO).
Se eu não entendi nada e realmente estiver falando besteira, por favor me
corrija, mas eu acredito que tenha sido esse o "cabelo de sapo" que esteja
te atrapalhando.
Espero ter ajudado mais que atrapalhado. :D
2009/11/23 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>
> els estão duplicando os itens qdo deveriam no loop verificar se o ocidog ja
> existe
>
> 2009/11/20 Rodrigo Cury <cury.fb em gmail.com>
>
> > nossa....
> > absolutamente impossível identificar o seu problema, através do texto
> > do seu email!!
> > só se analisar as SP.. mas o tempo não deixa no momento...
> >
> > Por isso é importante deixar claro no texto do email, qual é a dúvida,
> > ou o problema que está ocorrendo, ou qual o comportamente esperado das
> > instruções passadas... ou qualquer coisa assim...
> >
> >
> >
> >
> > 2009/10/27 Reijanio Nunes Ribeiro <rnribeiro em gmail.com>:
> > > bom dia a todos estou com um pequeno problema em duas uma que são
> > > praticamente identica a outra qu funciona muito bem poderiam me ajudar:
> > >
> > >
> > > PROCEDURE QUE FUNCIONA
> > >
> > > SET TERM ^ ;
> > >
> > > CREATE PROCEDURE IMPORTAR (
> > > codigo varchar(14),
> > > descricao varchar(200),
> > > vlrvenda double precision,
> > > perc_ipi double precision,
> > > class_fiscal integer)
> > > as
> > > begin
> > > for select codigo, descricao, preco_venda, perc_ipi, class_fiscal
> from
> > > stihl
> > > into :codigo, :descricao, :vlrvenda, :perc_ipi, :class_fiscal do
> > > begin
> > > if(Exists(select * from produto WHERE codigo =:codigo))then
> > > begin
> > > update produto set vlrvenda = :vlrvenda,
> > > descricao =:descricao,
> > > ipi = :perc_ipi,
> > > class_fiscal =:class_fiscal
> > > where (codigo = :codigo);
> > > end
> > > else
> > > begin
> > > insert into produto(codigo, descricao, ipi, class_fiscal, vlrvenda)
> > > values
> > > (
> > > :codigo ,
> > > :descricao,
> > > :perc_ipi,
> > > :class_fiscal,
> > > :vlrvenda
> > > );
> > > end
> > > end
> > > end^
> > >
> > > SET TERM ; ^
> > >
> > >
> > > PROCEDURE QUE NÃO FUNCIONA
> > >
> > > SET TERM ^ ;
> > >
> > > CREATE PROCEDURE ATLZ_PRECO (
> > > idprod varchar(18),
> > > vlr_venda double precision)
> > > as
> > > begin
> > > for select codigo, preco_venda from stihl
> > > into :idprod, :vlr_venda do
> > > begin
> > > if(Exists(select * from preco_tabela WHERE codigo =:idprod))then
> > > begin
> > > update preco_tabela set vlr_venda = :vlr_venda
> > > where (codigo = :idprod);
> > > --tentativa
> > > end
> > > else
> > > begin
> > > insert into preco_tabela(idprod, vlr_venda)
> > > values
> > > (
> > > :idprod,
> > > :vlr_venda
> > > );
> > > end
> > > end
> > > end^
> > >
> > > SET TERM ;
> > >
> > > ESTRUTURA DA TABELA PRECO-TABELA
> > > CREATE GENERATOR GEN_PRECO_TABELA_ID;
> > >
> > > CREATE TABLE PRECO_TABELA (
> > > CODIGO INTEGER NOT NULL,
> > > IDTAB INTEGER,
> > > IDPROD VARCHAR(18),
> > > VLR_VENDA DOUBLE PRECISION,
> > > VLR_MENOR DOUBLE PRECISION,
> > > VLR_MAIOR DOUBLE PRECISION,
> > > VLR_SUGESTAO DOUBLE PRECISION,
> > > DT_ATUALIZA DATE,
> > > COD_EMP INTEGER,
> > > CODBARR VARCHAR(13)
> > > );
> > >
> > > ESTUTURA DA TABELA STIHL
> > >
> > > CREATE TABLE STIHL (
> > > CODIGO VARCHAR(14) NOT NULL,
> > > DESCRICAO VARCHAR(25),
> > > DESC_COMPLEM VARCHAR(29),
> > > QTD_MIN INTEGER,
> > > PRECO_VENDA DOUBLE PRECISION,
> > > COD_PROC INTEGER,
> > > PERC_RED_ICMS NUMERIC(2,0),
> > > PERC_IPI DOUBLE PRECISION,
> > > CLASS_FISCAL INTEGER,
> > > MODELO VARCHAR(130),
> > > HIERARQ_PROD VARCHAR(18),
> > > TERMINADOR CHAR(1),
> > > ALIQ_ECF NUMERIC(2,0)
> > > );
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista