Stored Procedure não funciona...
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
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
Curtidas 0
Respostas
Acacio
19/09/2006
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
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
Emerson Nascimento
19/09/2006
pela mensagem, MATERIAL_X_ESTRUTURA_5 é uma stored procedure selecionável e requer parâmetros, que não estão sendo passados.
GOSTEI 0
Osvaldo Modesto
19/09/2006
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
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