Fórum Stored Procedure não funciona... #56919
19/09/2006
0
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
Curtir tópico
+ 0Posts
20/09/2006
Acacio
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
Gostei + 0
21/09/2006
Emerson Nascimento
Gostei + 0
05/10/2006
Osvaldo Modesto
O que estava faltando eram os campos EstoqMinimo e Volume_Inicial na sentença GROUP BY
Valeu pela atenção!!
Muito Obrigado a Todos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)