Fórum Stored Procedure não funciona... #56919

19/09/2006

0

Socorro Preciso da ajuda de vocês!!

Estou tentando compilar a procedure abaixo – Estou tendo a seguinte msg. Erro:
------------------------------------------------------------------------------------------------
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
parameter mismatch for procedure MATERIAL_X_ESTRUTURA_5.
------------------------------------------------------------------------------------------------
Qual o significado dessa mensagem ??

Muitissimo Obrigado
Osvaldo Modesto
===========================================================================CREATE PROCEDURE ´PLANO_COMPRAS´
RETURNS(´COD_AREANEGOCIO´ CHAR(5) CHARACTER SET ASCII,
´EXERCICIO´ CHAR(5) CHARACTER SET ASCII,
´VERSAO´ VARCHAR(15) CHARACTER SET ASCII,
´LOTEMINCOMPRA´ DECIMAL (10,2),
´CODIGO_MATPRIMA´ CHAR(5) CHARACTER SET ASCII,
´DESC_MATPRIMA´ VARCHAR(25) CHARACTER SET ASCII,
´JANEIRO´ NUMERIC(15, 2),
´FEVEREIRO´ NUMERIC(15, 2),
´MARCO´ NUMERIC(15,2),
´ABRIL´ NUMERIC(15,2),
´MAIO´ NUMERIC(15,2),
´JUNHO´ NUMERIC(15,2),
´JULHO´ NUMERIC(15,2),
´AGOSTO´ NUMERIC(15,2),
´SETEMBRO´ NUMERIC(15,2),
´OUTUBRO´ NUMERIC(15,2),
´NOVEMBRO´ NUMERIC(15,2),
´DEZEMBRO´ NUMERIC(15,2))

AS
Declare Variable
LOTEMINIMO DECIMAL(10,2);
Begin
FOR
SELECT C.COD_AREANEGOCIO, C.EXERCICIO, C.VERSAO, A.LOTEMINCOMPRA,
D.CODIGO_MATPRIMA, D.DESC_MATPRIMA,
(SUM (C.JANEIRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As JANEIRO,
(SUM (C.FEVEREIRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As FEVEREIRO,
(SUM (C.MARCO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As MARCO,
(SUM (C.ABRIL_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As ABRIL,
(SUM (C.MAIO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As MAIO,
(SUM (C.JUNHO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As JUNHO,
(SUM (C.JULHO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As JULHO,
(SUM (C.AGOSTO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As AGOSTO,
(SUM (C.SETEMBRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As SETEMBRO,
(SUM (C.OUTUBRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As OUTUBRO,
(SUM (C.NOVEMBRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As NOVEMBRO,
(SUM (C.DEZEMBRO_MAT) + A.ESTQMINIMO - B.VOLUME_INICIAL ) As DEZEMBRO

FROM

REGRAS_NEGOCIOS_2 A,
EI_MAT_PRIMAS B,
MATERIAL_X_ESTRUTURA_5 C,
MATPRIMAS D

WHERE

D.CODIGO_MATPRIMA = A.CODIGO_MATPRIMA AND
D.CODIGO_MATPRIMA = B.CODIGO_MATPRIMA AND
D.CODIGO_MATPRIMA = C.CODIGO_MATPRIMA

Group by

C.COD_AREANEGOCIO, C.EXERCICIO, C.VERSAO, A.LOTEMINCOMPRA, D.CODIGO_MATPRIMA,
D.DESC_MATPRIMA
into
:AREANEGOCIO, :EXERCICIO, :VERSAO, :LOTEMINIMO, :CODIGO_MATPRIMA,
:DESC_MATPRIMA, :JANEIRO, :FEVEREIRO, :MARCO, :ABRIL, :MAIO, :JUNHO,
:JULHO, :AGOSTO, :SETEMBRO, :OUTUBRO, :NOVEMBRO, :DEZEMBRO

Do
begin
IF (:LOTEMINIMO IS NULL) then LOTEMINIMO = 0;
IF (:LOTEMINIMO > :JANEIRO) then JANEIRO = LOTEMINIMO;
IF (:LOTEMINIMO > :FEVEREIRO) then FEVEREIRO = LOTEMINIMO;
IF (:LOTEMINIMO > :MARCO) then MARCO = LOTEMINIMO;
IF (:LOTEMINIMO > :ABRIL) then ABRIL = LOTEMINIMO;
IF (:LOTEMINIMO > :MAIO) then MAIO = LOTEMINIMO;
IF (:LOTEMINIMO > :JUNHO) then JUNHO = LOTEMINIMO;
IF (:LOTEMINIMO > :JULHO) then JULHO = LOTEMINIMO;
IF (:LOTEMINIMO > :AGOSTO) then AGOSTO = LOTEMINIMO;
IF (:LOTEMINIMO > :SETEMBRO) then SETEMBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :OUTUBRO) then OUTUBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :NOVEMBRO) then NOVEMBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :DEZEMBRO) then DEZEMBRO = LOTEMINIMO;
SUSPEND;
End
End


Osvaldo Modesto

Osvaldo Modesto

Responder

Posts

20/09/2006

Acacio

O problema é com as fórmulas que fizesse.
Tente fazer assim:


CREATE PROCEDURE PLANO_COMPRAS
RETURNS (
COD_AREANEGOCIO CHAR(5),
EXERCICIO CHAR(5),
VERSAO VARCHAR(15),
LOTEMINCOMPRA NUMERIC(15,2),
CODIGO_MATPRIMA CHAR(5),
DESC_MATPRIMA VARCHAR(25),
JANEIRO NUMERIC(15,2),
FEVEREIRO NUMERIC(15,2),
MARCO NUMERIC(15,2),
ABRIL NUMERIC(15,2),
MAIO NUMERIC(15,2),
JUNHO NUMERIC(15,2),
JULHO NUMERIC(15,2),
AGOSTO NUMERIC(15,2),
SETEMBRO NUMERIC(15,2),
OUTUBRO NUMERIC(15,2),
NOVEMBRO NUMERIC(15,2),
DEZEMBRO NUMERIC(15,2))
AS
Declare Variable LOTEMINIMO DECIMAL(10,2);
Begin
FOR
SELECT C.COD_AREANEGOCIO, C.EXERCICIO, C.VERSAO, A.LOTEMINCOMPRA,
D.CODIGO_MATPRIMA, D.DESC_MATPRIMA,
(SUM (C.JANEIRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As JANEIRO,
(SUM (C.FEVEREIRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As FEVEREIRO,
(SUM (C.MARCO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As MARCO,
(SUM (C.ABRIL_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As ABRIL,
(SUM (C.MAIO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As MAIO,
(SUM (C.JUNHO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As JUNHO,
(SUM (C.JULHO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As JULHO,
(SUM (C.AGOSTO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As AGOSTO,
(SUM (C.SETEMBRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As SETEMBRO,
(SUM (C.OUTUBRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As OUTUBRO,
(SUM (C.NOVEMBRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As NOVEMBRO,
(SUM (C.DEZEMBRO_MAT + A.ESTQMINIMO - B.VOLUME_INICIAL )) As DEZEMBRO
FROM REGRAS_NEGOCIOS_2 A
JOIN EI_MAT_PRIMAS B ON A.CODIGO_MATPRIMA = B.CODIGO_MATPRIMA
JOIN MATERIAL_X_ESTRUTURA_5 C ON A.CODIGO_MATPRIMA = C.CODIGO_MATPRIMA
JOIN MATPRIMAS D ON A.CODIGO_MATPRIMA = D.CODIGO_MATPRIMA
Group by
C.COD_AREANEGOCIO, C.EXERCICIO, C.VERSAO, A.LOTEMINCOMPRA,
D.CODIGO_MATPRIMA, D.DESC_MATPRIMA
into
:COD_AREANEGOCIO, :EXERCICIO, :VERSAO, :LOTEMINIMO, :CODIGO_MATPRIMA,
:DESC_MATPRIMA, :JANEIRO, :FEVEREIRO, :MARCO, :ABRIL, :MAIO, :JUNHO,
:JULHO, :AGOSTO, :SETEMBRO, :OUTUBRO, :NOVEMBRO, :DEZEMBRO
Do
begin
IF (:LOTEMINIMO IS NULL) then LOTEMINIMO = 0;
IF (:LOTEMINIMO > :JANEIRO) then JANEIRO = LOTEMINIMO;
IF (:LOTEMINIMO > :FEVEREIRO) then FEVEREIRO = LOTEMINIMO;
IF (:LOTEMINIMO > :MARCO) then MARCO = LOTEMINIMO;
IF (:LOTEMINIMO > :ABRIL) then ABRIL = LOTEMINIMO;
IF (:LOTEMINIMO > :MAIO) then MAIO = LOTEMINIMO;
IF (:LOTEMINIMO > :JUNHO) then JUNHO = LOTEMINIMO;
IF (:LOTEMINIMO > :JULHO) then JULHO = LOTEMINIMO;
IF (:LOTEMINIMO > :AGOSTO) then AGOSTO = LOTEMINIMO;
IF (:LOTEMINIMO > :SETEMBRO) then SETEMBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :OUTUBRO) then OUTUBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :NOVEMBRO) then NOVEMBRO = LOTEMINIMO;
IF (:LOTEMINIMO > :DEZEMBRO) then DEZEMBRO = LOTEMINIMO;
SUSPEND;
End
End


Responder

Gostei + 0

21/09/2006

Emerson Nascimento

pela mensagem, MATERIAL_X_ESTRUTURA_5 é uma stored procedure selecionável e requer parâmetros, que não estão sendo passados.


Responder

Gostei + 0

05/10/2006

Osvaldo Modesto

Já corrigi o problema

O que estava faltando eram os campos EstoqMinimo e Volume_Inicial na sentença GROUP BY

Valeu pela atenção!!

Muito Obrigado a Todos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar