CREATE PROCEDURE PR_LISTANECESSIDADE ( EMPRESA INTEGER, PRODUTO VARCHAR(40), QUANTIDADE FLOAT, QT_NIVEIS INTEGER, QT_NIVELATUAL INTEGER) RETURNS ( CD_ITEM VARCHAR(40), DS_ITEM VARCHAR(100), TP_ITEM CHAR(1), QT_ITEM FLOAT, DS_UNIDADE VARCHAR(20), CD_FORNECEDOR INTEGER, NM_FORNECEDOR VARCHAR(100), NR_FONEFORNECEDOR VARCHAR(12), FG_ENTREGAPRAZO CHAR(1), FG_PRODUTODANIFICADO CHAR(1), FG_ENTREGACORRETA CHAR(1), CD_DEPOSITO INTEGER, NM_DEPOSITO VARCHAR(50), QT_ESTOQUE FLOAT) AS DECLARE VARIABLE NR_NIVEL INTEGER; DECLARE VARIABLE NR_NIVELATUAL INTEGER; DECLARE VARIABLE LIXO INTEGER = 0; begin NR_NIVEL = :QT_NIVEIS; NR_NIVELATUAL = :QT_NIVELATUAL; FOR SELECT CD_PRODUTO, DS_PRODUTO, DS_UNIDADE, '0' FROM SGACProduto WHERE cd_produto = :produto INTO :CD_ITEM, :DS_ITEM, :DS_UNIDADE, :TP_ITEM DO BEGIN QT_ITEM = :QUANTIDADE; QT_NIVEIS = 0; END /* Verificando se existe ligação para o produto */ SELECT COALESCE( Count(*), 0 ) FROM SGACProdLigacoes WHERE cd_produto = :produto INTO :LIXO; SUSPEND; IF (:LIXO <> 0 ) THEN EXECUTE PROCEDURE PR_EXPLODIRLISTA( :empresa, :produto, :qt_item, :nr_nivel, :nr_nivelatual ) RETURNING_VALUES :CD_ITEM, :DS_ITEM, :QT_ITEM, :DS_UNIDADE, :CD_FORNECEDOR, :NM_FORNECEDOR, :NR_FONEFORNECEDOR, :FG_ENTREGAPRAZO, :FG_PRODUTODANIFICADO, :FG_ENTREGACORRETA, :CD_DEPOSITO, :NM_DEPOSITO, :QT_ESTOQUE, :TP_ITEM; END