Re: [firebase-br] Gostaria da opinião de vocês sobre esta SP

Kléber Caneva kdcc em terra.com.br
Sex Nov 11 14:20:56 -03 2005


Andrei,

Acredito que o limite de chamadas recusivas, esteja considerando 1000 Niveis de recusividade.

Não tenho certeza disso, mas eu utilizei SP com recusividade em um projeto de Maquinas Agricolas. Existiam muitos niveis, mas com certeza menos que 1000.
Agora se considerar a quantidade de produtos (todos com estrutura abaixo) e esse varios niveis, com certeza ela era chamada muito mais de 1000 vezes.

Talvez seja interessante realizar um teste, infelismente não tenho mais a base que possui esta SP. Então se você resolve fazer o teste, por favor publique os resultados na lista. 

[]´s

Kléber Canena


----- Original Message ----- 
From: "Andrei Luís" <compuvale.software em gmail.com>
To: "Firebase" <lista em firebase.com.br>
Sent: Friday, November 11, 2005 1:34 PM
Subject: [firebase-br] Gostaria da opinião de vocês sobre esta SP


Bem, passado a febre do Curso Delphi/Firebird vou repetir minha msg:


Estou engatinhando no mundo das SPs e gostaria da opnião dos colegas
sobre a SP ae abaixo.

O objetivo é o seguinte: esta SP será disparada de dentro da aplicação
junto ao Select de produtos, sendo que a mesma retornará o custo do
produto. Tenho duas situações no cad de produtos, que é diferenciado
pelo campo montado:
se for 'F' (false) é produto "simples" se for 'T' (true) é produto
montado. Ex.: um HD seria 'F', já um computador completo seria 'T'.
Quando o produto é montado, ele tem em uma outra tabela (romaneios)
uma lista de produtos que ele contém. Aí eu montei o monstrinho ae
abaixo, que dependendo do parâmetro de entrada acaba fazendo uma
chamada recursiva a ela mesma...

E quanto a essa questão de chamada recursiva? Hoje os produtos que
estão cadastrados (dados reais) requerem no máximo três chamadas
recursivas. Li quer o limite do FB seriam de 1000 chamadas. Isto está
correto ou terei algum problema? Até agora os testes que fiz estão OK.

Eis a dita cuja:

CREATE PROCEDURE CALC_CUSTO_PRODUTOS (
    WPRODUTO_ID INTEGER)
RETURNS (
    WCUSTO NUMERIC(9,2))
AS
DECLARE VARIABLE WPRODUTO_ID2 INTEGER;
DECLARE VARIABLE WCUSTOPARCIAL NUMERIC(9,2);
DECLARE VARIABLE WICMS NUMERIC(9,2);
DECLARE VARIABLE WMONTADO CHAR(1);
DECLARE VARIABLE WFORNECEDOR_ID INTEGER;
begin
  wCusto=0;
  Select montado, fornecedor_id from produtos where
produtos.registro_id=:wproduto_id into :wmontado, :wfornecedor_id;
--  Select fornecedor_id from produtos where
produtos.registro_id=:wproduto_id into :wfornecedor_id;
  if (wMontado='F') then  /* Se **** NÃO **** FOR UM PRODUTO MONTADO */
     begin
        select icms from agenda where
agenda.registro_id=:wFornecedor_id into :wICMS;
        select Coalesce((valor_compra *
(1-(:wICMS/100)))+(valor_Compra*(IPI/100)),0) from produtos
             where registro_id=:wproduto_id into wcusto;
     end
  if (wMontado='T') then   /* Se **** FOR **** UM PRODUTO MONTADO */
     begin
        for Select produto_id, Coalesce((qtde * (Select wCusto
                            from Calc_Custo_Produtos(romaneios.produto_id))),0)
        from romaneios where montagem_id=:wproduto_id
        into :wproduto_id2, :wcustoparcial
        do
           wcusto=:wcusto+:wcustoparcial;
     end
  suspend;
end


[]s
Andrei

W2K + D4 Pro + FB 1.5.2 + IBO 4.5B

______________________________________________
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

E-mail classificado pelo Identificador de Spam Inteligente Terra.
Para alterar a categoria classificada, visite
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1131723414.774675.12535.chipata.terra.com.br,5809,Des15,Des15

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 10/11/2005 / Versão: 4.4.00/4625
Proteja o seu e-mail Terra: http://mail.terra.com.br/





Mais detalhes sobre a lista de discussão lista