SET TERM ^ ;

CREATE OR ALTER procedure SP_FLUXO_MODELO (
    IMODELO_ID integer = 0)
returns (
    PECA integer,
    MODELO_ID integer,
    COR_ID bigint,
    TAMANHO integer,
    ORDEM integer,
    TEMPO numeric(15,4),
    CARGA integer,
    FLUXO_ID integer)
as
declare variable MODELO_FILHO integer;
declare variable PECA_CONTADOR integer;
begin

  PECA_CONTADOR = 0;

  for
    select
        m.codigo
    from tbmodelo m
    where m.modelo_pai = :IMODELO_ID
    and m.status = '1'

    union all

    select
        m.codigo
    from tbmodelo m
    where m.codigo = :IMODELO_ID
  into
    :MODELO_FILHO
  do begin
    PECA_CONTADOR = PECA_CONTADOR + 1;

    for
        select
            a.peca,
            a.modelo_id,
            a.cor_id,
            a.tamanho,
            a.ORDEM,
            a.tempo,
            a.CARGA,
            a.FLUXO_ID
        from TBMODELO_FLUXO_PRODUCAO A
        where a.modelo_id = :MODELO_FILHO
        and a.tempo > 0
    into
        :peca,
        :modelo_id,
        :cor_id,
        :tamanho,
        :ORDEM,
        :tempo,
        :CARGA,
        :FLUXO_ID
    do begin
        suspend;
    end
  end

end
^

SET TERM ; ^

