DROP TYPE TCO_LIDERADOGN_TABLE
/
DROP TYPE TCO_LIDERADOGN_ROW
/

CREATE TYPE TCO_LIDERADOGN_ROW AS OBJECT
(
  NRGERENTENEGOCIO NUMBER,
  CDOPERADOR VARCHAR2(12),
  CDOPERADORLIDER VARCHAR2(12)
)
/

/**
 * View que lista o operador da equipe comercial e seus liderados
 *
 * revisada
 */
CREATE TYPE TCO_LIDERADOGN_TABLE AS TABLE OF TCO_LIDERADOGN_ROW
/

CREATE OR REPLACE
FUNCTION LIDERADOGN
(
   P_CDOPERADOR IN VARCHAR2
) RETURN TCO_LIDERADOGN_TABLE PIPELINED
AS
   LINHA TCO_LIDERADOGN_ROW := TCO_LIDERADOGN_ROW(NULL, NULL, NULL);
BEGIN
   FOR C_LIDERADOS IN
   (
      SELECT G.NRGERENTENEGOCIO, G.CDOPERADOR, G.CDOPERADORLIDER
        FROM GERENTENEGOCIO G
       WHERE IDATIVO = 'S'       
       START WITH G.CDOPERADOR IN P_CDOPERADOR
     CONNECT BY PRIOR G.CDOPERADOR = G.CDOPERADORLIDER
   ) LOOP
      LINHA.NRGERENTENEGOCIO := C_LIDERADOS.NRGERENTENEGOCIO;
      LINHA.CDOPERADOR := C_LIDERADOS.CDOPERADOR;
      LINHA.CDOPERADORLIDER := C_LIDERADOS.CDOPERADORLIDER;      

      PIPE ROW (LINHA);
   END LOOP;
   RETURN;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('LIDERADOGN','6.35.009'); END;
/
