Re: [firebase-br] Stored chamar Stored. Problema offset na compilação

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Seg Jan 9 12:01:27 -03 2006


Experimenta fazer um backup e restore do seu banco.

Outra coisa, experimenta dar um cast nos campos Varchar na chamada da SP.

Sucesso,

=========================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - Pr
=========================

----- Original Message ----- 
From: "Edvaldo (BOL)" <evgomes em bol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, January 09, 2006 9:33 AM
Subject: Re: [firebase-br] Stored chamar Stored. Problema offset na 
compilação


Você deve declarar seu parâmetro de retorno como return_values.

----- Original Message ----- 
From: "Romulo Oliveira" <romulocpd em yahoo.com.br>
To: <lista em firebase.com.br>
Sent: Monday, January 09, 2006 8:39 AM
Subject: [firebase-br] Stored chamar Stored. Problema offset na compilação


Olá amigos,

Tenho uma Stored que movimenta o estoque:

CREATE PROCEDURE SP_INCMOVESTOQUE (
     PEMPRESA INTEGER,
     PEMPRESAORIGEM INTEGER,
     PPRODUTO INTEGER,
     PCOR INTEGER,
     PTAMANHO INTEGER,
     PDATALANC DATE,
     PTIPO CHAR(3),
     PDOCUMENTO VARCHAR(20),
     PHISTORICO VARCHAR(60),
     PQTDLANC NUMERIC(18,4))
RETURNS (
     PCODIGO INTEGER)
AS
DECLARE VARIABLE SALDOANTERIOR NUMERIC(18,4);
DECLARE VARIABLE SALDOATUAL NUMERIC(18,4);
BEGIN

     PCODIGO = GEN_ID(SEQ_MOVESTOQUE,1);

     SELECT ETQ_ATUAL FROM ESTOQUE
     WHERE ETQ_EMPRESA = :PEMPRESA AND
           ETQ_PRODUTO = :PPRODUTO AND
           ETQ_COR = :PCOR AND
           ETQ_TAMANHO = :PTAMANHO INTO :SALDOANTERIOR;

     IF (PTIPO = 'CRE') THEN
         SALDOATUAL = SALDOANTERIOR + PQTDLANC;
     IF (PTIPO = 'DEB') THEN
         SALDOATUAL = SALDOANTERIOR - PQTDLANC;

     INSERT INTO MOV_ESTOQUE
         (MES_CODIGO, MES_EMPRESA, MES_EMPRESAORIGEM, MES_PRODUTO, MES_COR,
          MES_TAMANHO, MES_DATALANC, MES_TIPO, MES_DOCUMENTO, MES_HISTORICO,
          MES_SALDOANTERIOR, MES_QTDLANC, MES_SALDOATUAL)
     VALUES
         (:PCODIGO, :PEMPRESA, :PEMPRESAORIGEM, :PPRODUTO, :PCOR,
          :PTAMANHO, :PDATALANC, :PTIPO, :PDOCUMENTO, :PHISTORICO,
          :SALDOANTERIOR, :PQTDLANC, :SALDOATUAL);
     SUSPEND;

     UPDATE
         ESTOQUE
     SET
         ETQ_ATUAL = :SALDOATUAL
     WHERE
         ETQ_EMPRESA = :PEMPRESA AND
         ETQ_PRODUTO = :PPRODUTO AND
         ETQ_COR = :PCOR AND
         ETQ_TAMANHO = :PTAMANHO;

END

Esta Stored funciona perfeitamente! Se chamada direto.

Agora tenho uma stored que inclui itens de uma requisição de produtos.

Ela é assim:


CREATE PROCEDURE SP_INCREQUISICAO_ITENS (
     PREQUISICAO INTEGER,
     PEMPRESA INTEGER,
     PPRODUTO INTEGER,
     PCOR INTEGER,
     PTAMANHO INTEGER,
     PQTD NUMERIC(12,4),
     PVLRUNIT NUMERIC(12,4))
RETURNS (
     PCODIGO INTEGER)
AS
BEGIN

     SELECT
         MAX(REI_ITEM)
     FROM
         REQUISICAO_ITENS
     WHERE
         REI_CODIGO = :PREQUISICAO AND
         REI_EMPRESA = :PEMPRESA
     INTO
         :PCODIGO;

     IF (:PCODIGO IS NULL) THEN
         PCODIGO = 1;
     ELSE
         PCODIGO = PCODIGO + 1;
     SUSPEND;

     INSERT INTO REQUISICAO_ITENS
         (REI_CODIGO, REI_EMPRESA, REI_ITEM, REI_PRODUTO, REI_COR,
          REI_TAMANHO, REI_QTD, REI_VLRUNIT)
     VALUES
         (:PREQUISICAO, :PEMPRESA, :PCODIGO, :PPRODUTO, :PCOR,
          :PTAMANHO, :PQTD, :PVLRUNIT);

     EXECUTE PROCEDURE SP_INCMOVESTOQUE(:PEMPRESA, :PEMPRESA, :PPRODUTO,
:PCOR,
     :PTAMANHO,CURRENT_DATE, 'DEB', 'TESTE','TESTE',1);

END

Vejam que nela chamo o SP_INCMOVESTOQUE.   Os parametros estao todos
corretos, porém na hora da compilação se eu deixar a chamada ele dá o
seguinte erro:

Invalid token.
invalid request BLR at offset 500.
parameter mismatch for procedure SP_INCMOVESTOQUE.

O que pode ser?  Ele diz parametro inválido porém já verifiquei
exatamente todos os parametros.

Vlw galera!!!
Romulo Oliveira



______________________________________________
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


______________________________________________
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 





Mais detalhes sobre a lista de discussão lista