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

Romulo Oliveira romulocpd em yahoo.com.br
Seg Jan 9 12:36:12 -03 2006


Eduardo,

Consegui resolver porém não foi da forma que eu quis.  Pelo que entendi 
a stored INCMOVESTOQUE retorna o código do lançamento.   Estou 
executando EXECUTE PROCEDURE porém sem "pegar" este valor de retorno, 
daí deu erro.  Eu fui na stored e retirei o parametro de retorno. Voalá! 
Funcionou perfeitamente!  Porémeu precisava do codigo sendo retornado em 
outros momentos.

Vlw


Eduardo Jedliczka (TeamFB) wrote:
> 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





Mais detalhes sobre a lista de discussão lista