Stored Procedure não funciona... Socorro!!
Caros Colegas, Bom dia!
Sou novo aqui no Fórum e já estou trazendo um grande problema ou desafio para quem assim preferir... Peço a paciência de vocês.
Desde já, agradeço pela atenção!!
É o seguinte, tenho as tabelas:
EI_PROD_ACAB (Estoque Inicial), REGRAS_NEGOCIOS_4 (Estoque Mínimo), PLAN_VENDAS_VOL (Vendas) e ESTRUTURA_PRODUTOS (Composição do Item).
Estou tentando montar uma procedure com o seguinte objetivo:
Primeiramente deve calcular a Produção da seguinte maneira:-
Produção = Estoque Mínimo – Estoque Inicial + Vendas (1)
Deverá guardar o resultado desse cálculo em variável e aplicar a seguinte regra para obter a Necessidade de Materiais (que serão consumidos na produção)
Necessidade de Materiais = Soma (Produção * QtdeInsumos) (2)
--> QtdeInsumos é um campo da Tabela Estrutura_Produtos})
Na tabela Estrutura_Produtos, para cada produtos, posso ter vários itens que o compõe. Exemplo: para se fabricar cerveja, ´precisamos de água, malte, cevada, garrafa, rótulo e tampinha de garrafa, portanto todos esses itens fazem parte da estrutura do produto CERVEJA, cada qual com uma determinada quantidade.
Multiplicando-se o volume de produção de cerveja por cada 1 desses componentes (água, malte, cevada, etc.) obteremos o total de matérias primas necessárias para a produção do produto CERVEJA.
Obs:- Dei exemplo de apenas 1 produto consumindo matérias primas. Mas na realidade serão vários itens consumindo várias matérias primas, de modo que 1 mesma matéria prima pode estar em vários Produtos...
Esse é o objetivo da procedure: Retornar a quantidade total de materiais necessário para a produção obtida na primeira fórmula (1)
Montei a procedure abaixo, mas não está dando certo. O que há de errado nessa procedure??
Vocês poderiam me dar essa grande força ??
Mais uma vez, agradeço pela atenção e paciência de vocês
Grande Abraço,
Osvaldo Modesto
Procedure:
CREATE PROCEDURE ´NECESSIDADE_MATERIAIS´
RETURNS( ´CODIGO´ CHAR(5),
´MATERIA´ VARCHAR(25),
´JANEIRO´ DECIMAL(10, 2),
´FEVEREIRO´ DECIMAL(10, 2),
´MARCO´ DECIMAL(10, 2),
´ABRIL´ DECIMAL(10, 2),
´MAIO´ DECIMAL(10, 2),
´JUNHO´ DECIMAL(10, 2),
´JULHO´ DECIMAL(10, 2),
´AGOSTO´ DECIMAL(10, 2),
´SETEMBRO´ DECIMAL(10, 2),
´OUTUBRO´ DECIMAL(10, 2),
´NOVEMBRO´ DECIMAL(10, 2),
´DEZEMBRO´ DECIMAL(10, 2))
AS
/*Declaração das variaveis de apoio*/
declare variable TOTALJN numeric(10,2);
declare variable TOTALFV numeric(10,2);
declare variable TOTALMA numeric(10,2);
declare variable TOTALAB numeric(10,2);
declare variable TOTALMI numeric(10,2);
declare variable TOTALJU numeric(10,2);
declare variable TOTALJL numeric(10,2);
declare variable TOTALAG numeric(10,2);
declare variable TOTALST numeric(10,2);
declare variable TOTALOU numeric(10,2);
declare variable TOTALNV numeric(10,2);
declare variable TOTALDZ numeric(10,2);
begin
/*Para cada um dos resultados*/
For
Select D.CODIGO_MATPRIMA,E.DESC_MATPRIMA,
Sum(C.JANEIRO),
Sum(C.FEVEREIRO),
Sum(C.MARCO),
Sum(C.ABRIL),
Sum(C.MAIO),
Sum(C.JUNHO),
Sum(C.JULHO),
Sum(C.AGOSTO),
Sum(C.SETEMBRO),
Sum(C.OUTUBRO),
Sum(C.NOVEMBRO),
Sum(C.DEZEMBRO),
(A.ESTQMINIMO - VOLUME_INICIAL)
from
REGRAS_NEGOCIOS_4 A,
EI_PROD_ACAB B,
PLANO_VENDAS_VOL C,
ESTRUTURA_PRODUTOS D,
MATPRIMAS E
where
A.CODIGO_PRODAC = B.CODIGO_PRODAC AND
B.CODIGO_PRODAC = C.CODIGO_PRODAC AND
C.CODIGO_PRODAC = D.CODIGO_PRODAC AND
D.CODIGO_MATPRIMA = E.CODIGO_MATPRIMA
Group by
D.CODIGO_MATPRIMA,
E.DESC_MATPRIMA,
A.ESTQMINIMO,
B.VOLUME_INICIAL
into /*Armazena*/
:CODIGO,
:MATERIA,
:TOTALJN,
:TOTALFV,
:TOTALMA,
:TOTALAB,
:TOTALMI,
:TOTALJU,
:TOTALJL,
:TOTALAG,
:TOTALST,
:TOTALOU,
:TOTALNV,
:TOTALDZ
do
begin
JANEIRO = (TOTALJN) * D.QTDEINSUMO;
FEVEREIRO = (TOTALFV ) * D.QTDEINSUMO;
MARCO = (TOTALMA ) * D.QTDEINSUMO;
ABRIL = (TOTALAB ) * D.QTDEINSUMO;
MAIO = (TOTALMI ) * D.QTDEINSUMO;
JUNHO = (TOTALJU ) * D.QTDEINSUMO;
JULHO = (TOTALJL ) * D.QTDEINSUMO;
AGOSTO = (TOTALAG ) * D.QTDEINSUMO ;
SETEMBRO = (TOTALST ) * D.QTDEINSUMO;
OUTUBRO = (TOTALOU ) * D.QTDEINSUMO;
NOVEMBRO = (TOTALNV ) * D.QTDEINSUMO;
DEZEMBRO = (TOTALDZ ) * TOTALINSUMO;
/*Envia a linha para retorno*/
Suspend;
end
end;
Sou novo aqui no Fórum e já estou trazendo um grande problema ou desafio para quem assim preferir... Peço a paciência de vocês.
Desde já, agradeço pela atenção!!
É o seguinte, tenho as tabelas:
EI_PROD_ACAB (Estoque Inicial), REGRAS_NEGOCIOS_4 (Estoque Mínimo), PLAN_VENDAS_VOL (Vendas) e ESTRUTURA_PRODUTOS (Composição do Item).
Estou tentando montar uma procedure com o seguinte objetivo:
Primeiramente deve calcular a Produção da seguinte maneira:-
Produção = Estoque Mínimo – Estoque Inicial + Vendas (1)
Deverá guardar o resultado desse cálculo em variável e aplicar a seguinte regra para obter a Necessidade de Materiais (que serão consumidos na produção)
Necessidade de Materiais = Soma (Produção * QtdeInsumos) (2)
--> QtdeInsumos é um campo da Tabela Estrutura_Produtos})
Na tabela Estrutura_Produtos, para cada produtos, posso ter vários itens que o compõe. Exemplo: para se fabricar cerveja, ´precisamos de água, malte, cevada, garrafa, rótulo e tampinha de garrafa, portanto todos esses itens fazem parte da estrutura do produto CERVEJA, cada qual com uma determinada quantidade.
Multiplicando-se o volume de produção de cerveja por cada 1 desses componentes (água, malte, cevada, etc.) obteremos o total de matérias primas necessárias para a produção do produto CERVEJA.
Obs:- Dei exemplo de apenas 1 produto consumindo matérias primas. Mas na realidade serão vários itens consumindo várias matérias primas, de modo que 1 mesma matéria prima pode estar em vários Produtos...
Esse é o objetivo da procedure: Retornar a quantidade total de materiais necessário para a produção obtida na primeira fórmula (1)
Montei a procedure abaixo, mas não está dando certo. O que há de errado nessa procedure??
Vocês poderiam me dar essa grande força ??
Mais uma vez, agradeço pela atenção e paciência de vocês
Grande Abraço,
Osvaldo Modesto
Procedure:
CREATE PROCEDURE ´NECESSIDADE_MATERIAIS´
RETURNS( ´CODIGO´ CHAR(5),
´MATERIA´ VARCHAR(25),
´JANEIRO´ DECIMAL(10, 2),
´FEVEREIRO´ DECIMAL(10, 2),
´MARCO´ DECIMAL(10, 2),
´ABRIL´ DECIMAL(10, 2),
´MAIO´ DECIMAL(10, 2),
´JUNHO´ DECIMAL(10, 2),
´JULHO´ DECIMAL(10, 2),
´AGOSTO´ DECIMAL(10, 2),
´SETEMBRO´ DECIMAL(10, 2),
´OUTUBRO´ DECIMAL(10, 2),
´NOVEMBRO´ DECIMAL(10, 2),
´DEZEMBRO´ DECIMAL(10, 2))
AS
/*Declaração das variaveis de apoio*/
declare variable TOTALJN numeric(10,2);
declare variable TOTALFV numeric(10,2);
declare variable TOTALMA numeric(10,2);
declare variable TOTALAB numeric(10,2);
declare variable TOTALMI numeric(10,2);
declare variable TOTALJU numeric(10,2);
declare variable TOTALJL numeric(10,2);
declare variable TOTALAG numeric(10,2);
declare variable TOTALST numeric(10,2);
declare variable TOTALOU numeric(10,2);
declare variable TOTALNV numeric(10,2);
declare variable TOTALDZ numeric(10,2);
begin
/*Para cada um dos resultados*/
For
Select D.CODIGO_MATPRIMA,E.DESC_MATPRIMA,
Sum(C.JANEIRO),
Sum(C.FEVEREIRO),
Sum(C.MARCO),
Sum(C.ABRIL),
Sum(C.MAIO),
Sum(C.JUNHO),
Sum(C.JULHO),
Sum(C.AGOSTO),
Sum(C.SETEMBRO),
Sum(C.OUTUBRO),
Sum(C.NOVEMBRO),
Sum(C.DEZEMBRO),
(A.ESTQMINIMO - VOLUME_INICIAL)
from
REGRAS_NEGOCIOS_4 A,
EI_PROD_ACAB B,
PLANO_VENDAS_VOL C,
ESTRUTURA_PRODUTOS D,
MATPRIMAS E
where
A.CODIGO_PRODAC = B.CODIGO_PRODAC AND
B.CODIGO_PRODAC = C.CODIGO_PRODAC AND
C.CODIGO_PRODAC = D.CODIGO_PRODAC AND
D.CODIGO_MATPRIMA = E.CODIGO_MATPRIMA
Group by
D.CODIGO_MATPRIMA,
E.DESC_MATPRIMA,
A.ESTQMINIMO,
B.VOLUME_INICIAL
into /*Armazena*/
:CODIGO,
:MATERIA,
:TOTALJN,
:TOTALFV,
:TOTALMA,
:TOTALAB,
:TOTALMI,
:TOTALJU,
:TOTALJL,
:TOTALAG,
:TOTALST,
:TOTALOU,
:TOTALNV,
:TOTALDZ
do
begin
JANEIRO = (TOTALJN) * D.QTDEINSUMO;
FEVEREIRO = (TOTALFV ) * D.QTDEINSUMO;
MARCO = (TOTALMA ) * D.QTDEINSUMO;
ABRIL = (TOTALAB ) * D.QTDEINSUMO;
MAIO = (TOTALMI ) * D.QTDEINSUMO;
JUNHO = (TOTALJU ) * D.QTDEINSUMO;
JULHO = (TOTALJL ) * D.QTDEINSUMO;
AGOSTO = (TOTALAG ) * D.QTDEINSUMO ;
SETEMBRO = (TOTALST ) * D.QTDEINSUMO;
OUTUBRO = (TOTALOU ) * D.QTDEINSUMO;
NOVEMBRO = (TOTALNV ) * D.QTDEINSUMO;
DEZEMBRO = (TOTALDZ ) * TOTALINSUMO;
/*Envia a linha para retorno*/
Suspend;
end
end;
Osvaldo Modesto
Curtidas 0