[firebase-br] apanhando de stored_procedure alguem pode me ajudar(2º tentativa)

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Sáb Fev 7 11:48:12 -03 2009


bom é ai que to apanhando poderia me ajudar a montar essa sp pois é a
primeira que uso no meu sistema, e não tenho ideia de como faze-la pois
sempre da erro

2009/2/7 Carlos Magno P Souza <delphimagno em uol.com.br>

> Isto vai importar apenas 1 registro. Você deve executar esta procedure para
> cada registro da tabela STIHL. O While deve estar no aplicativo que chama a
> procedure.
>
> if(Exists(select codigo from stihl where codigo = :codigo))then
>
>  update produto set vlrvenda = : vlrvenda,
>
>  descricao =:descricao
>
>  where (codigo = :codigo);
>
>   else
>
> /*    insert into produto(codigo, descricao, vlrvenda) select codigo,
> descricao, preco_venda
>   from stihl; */
>
>  INSERT INTO PRODUTO (CODIGO, DESCRICAO, VLRVENDA)
>  VALUES (:CODIGO, :DESCRICAO,:VLR_VENDA)
> /* OU ENTÃO
>  INSERT INTO PRODUTO (CODIGO, DESCRICAO, VLRVENDA)
>  SELECT CODIGO, DESCRICAO, VLRVENDA
>  FROM STIHL
>  WHERE CODIGO = :CODIGO
> */
>
> Outra saída é fazer um loop dentro da procedure
>
> FOR SELECT CODIGO, DESCRICAO, VLRVENDA  FROM STIHL
>        INTO :CODIGO, :DESCRICAO, :VLRVENDA
>        DO BEGIN
>        -- e o código anterior ficaria aqui dentro
>
>        END
>
> ----- Original Message ----- From: "Reijanio Nunes Ribeiro" <
> rnribeiro em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Saturday, February 07, 2009 9:36 AM
> Subject: [firebase-br] apanhando de stored_procedure alguem pode me
> ajudar(2º tentativa)
>
>
>
> bom dia
>
> Alguem poderia me ajudar com essa procedure:
>
> A logica seria assim importei uma tabela em txt com aproximadamente 6600
> itens então tentei usar essa procedure da seguinte forma depois de baixar o
> txt pra tabela temporária, executar a procedure que varreria a tabela de
> produto sprocurando itens se achasse daria o update nos precos dos itens,
> caso não encontrasse então começaria a inserir os mesmos, mais ta dando
> erro
> podereiam me ajudar,
>
> Acho que ta faltando um while ai mais não sei como implementa-lo no
> firebird
> e não quero ter que fazer isso no delphi se puderem me ajudar ficarei
> grato,
> obrigado
>
>
>
> SET TERM ^ ;
>
>
>
> CREATE PROCEDURE IMPORTAR (
>
>   codigo integer,
>
>   descricao varchar(200),
>
>   vlrvenda double precision)
>
> as
>
> begin
>
>  if(Exists(select codigo from stihl where codigo = :codigo))then
>
>  update produto set vlrvenda = : vlrvenda,
>
>  descricao =:descricao
>
>  where (codigo = :codigo);
>
>   else
>
>   insert into produto(codigo, descricao, vlrvenda) select codigo,
> descricao, preco_venda
>
>   from stihl;
>
>  /*suspend;*/
>
> /*end^*/
>
>  end^
>
> SET TERM ; ^
>
> Estrutura das tabelas
>
> CREATE TABLE PRODUTO (
>
>   CODIGO        VARCHAR(18) NOT NULL,
>
>   DESCRICAO     VARCHAR(200),
>
>   VLRVENDA      DOUBLE PRECISION,
>   IPI           numerIC
>  CLASSFISCAL    VARCHAR(14)
>  //retirei os outros campos pq o email anterior ficou aguardando aprovação
> pois era muito grande
>
> CREATE TABLE STIHL (
>
>   CODIGO         VARCHAR(14) NOT NULL,
>
>   DESCRICAO      VARCHAR(25),
>
>   DESC_COMPLEM   VARCHAR(29),
>
>   QTD_MIN        INTEGER,
>
>   PRECO_VENDA    NUMERIC(15,5),
>
>   COD_PROC       INTEGER,
>
>   PERC_RED_ICMS  NUMERIC(2,0),
>
>   PERC_IPI       NUMERIC(9,5),
>
>   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
>



Mais detalhes sobre a lista de discussão lista