Fórum SP que faz loop em outra tabela #53404
18/10/2005
0
assim:
[color=green:e386de504e]CREATE PROCEDURE TALHAO_TRATAMENTO (
SAFRA INTEGER,
CUL INTEGER,
VARI INTEGER,
INS VARCHAR(40))
RETURNS (
AREA_PLANTADA NUMERIC(15,4),
COD_SAFRA INTEGER,
COD_TALHAO INTEGER,
CULTURAS VARCHAR(70),
INDICE INTEGER,
TINDICE INTEGER,
TAREA NUMERIC(15,4),
TARRENDADO INTEGER,
TDESCRICAO VARCHAR(10),
INSUMO VARCHAR(50))
AS
begin
for select a.AREA_PLANTADA, a.COD_SAFRA, a.COD_TALHAO, a.CULTURAS, a.INDICE, a.TINDICE, a.TAREA, a.TARRENDADO, a.TDESCRICAO
from VTAHOES_SAFRA a, VCULTURA_TALHAO b, VV_TALHOES c, vplanilha_de_tarefa aa
where a.COD_SAFRA =:safra
and b.cod_safra =a.cod_safra
and b.cod_talhao=a.indice
and b.cod_cultura=:cul
and c.cod_safra = b.cod_safra
and c.cod_cultura = b.cod_cultura
and c.cod_talhao = b.cod_talhao
and c.cod_variedade = :vari
and aa.cod_safra = :safra
and aa.cod_atividade = 11
and aa.cod_talhao = a.cod_talhao
into :area_plantada,:cod_safra,:cod_talhao,:culturas,:indice,:tindice,:tarea ,:tarrendado,:tdescricao[/color:e386de504e]do
begin
[color=red:e386de504e]aki que não consigo fazer o loop e voltar as informaçoes que não existem pra Sp
for select descricao
from insumos_planilha ba
where ba.cod_safra=:safra
and ba.cod_talhao=:cod_talhao
and not :ins containing ba.cod_insumo
into :insumo do suspend;
end[/color:e386de504e]
[color=green:e386de504e]end[/color:e386de504e]
o primeiro select trás as informaçoes por ex:
Cultura Origem
Milho T-3
Soja T-6
Arroz T-8
ai eu preciso passar pelo Milho verificar se existe lançamento em uma Tabela chamanda ´insumos_planilha ba´ com as condições
safra=:safra
tal=:tal
not :ins containing cod_insumo // aki é o codigo de cada produto que vou verificar
então se eu pegar Milho e não encontrar nada lançado com o :par ele adicione uma linha!
e depois ele vai pro Soja
thanks
Marcos Fernando
Curtir tópico
+ 0Posts
18/10/2005
Afarias
mas acho q vc quer algo como:
{...}
select <alguma coisa de insumos_planilha>
where <usa parâmetros do primeiro select>
into :var1, :var2 ... ;
if (var1 is null) then // não há o registro
insert into <tabela> values (:var1, :var2, ...);
{...}T+
Gostei + 0
18/10/2005
Emerson Nascimento
CREATE PROCEDURE TALHAO_TRATAMENTO ( SAFRA INTEGER, CUL INTEGER, VARI INTEGER, INS VARCHAR(40)) RETURNS ( AREA_PLANTADA NUMERIC(15,4), COD_SAFRA INTEGER, COD_TALHAO INTEGER, CULTURAS VARCHAR(70), INDICE INTEGER, TINDICE INTEGER, TAREA NUMERIC(15,4), TARRENDADO INTEGER, TDESCRICAO VARCHAR(10), INSUMO VARCHAR(50)) AS begin for select a.AREA_PLANTADA, a.COD_SAFRA, a.COD_TALHAO, a.CULTURAS, a.INDICE, a.TINDICE, a.TAREA, a.TARRENDADO, a.TDESCRICAO from VTAHOES_SAFRA a inner join VCULTURA_TALHAO b on (b.cod_safra =a.cod_safra and b.cod_talhao=a.indice) inner join VV_TALHOES c on (c.cod_safra = b.cod_safra and c.cod_cultura = b.cod_cultura and c.cod_talhao = b.cod_talhao) inner join vplanilha_de_tarefa aa on (aa.cod_talhao = a.cod_talhao) where a.COD_SAFRA =:safra and b.cod_cultura=:cul and c.cod_variedade = :vari and aa.cod_safra = :safra and aa.cod_atividade = 11 into :area_plantada,:cod_safra,:cod_talhao,:culturas,:indice,:tindice, :tarea ,:tarrendado,:tdescricao do begin if not exists(select descricao from insumos_planilha where cod_safra=:safra and cod_talhao=:cod_talhao and :ins containing cod_insumo) then suspend; end end
Gostei + 0
18/10/2005
Marcos Fernando
Thanks
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)