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