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

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Seg Jan 9 13:04:56 -03 2006


bom, então vamos lá...

Coloque o parâmetro de retorno na sua 1ª SP, e na chamada à ela, pela 2ª, 
transforme a linha num For Select sp(blablabal) into uma_variavel_qualquer.

Sucesso,

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

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


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


______________________________________________
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