CREATE OR REPLACE FUNCTION BUSCA_BANDEIRA_CNC(P_NMPRODUTO IN VARCHAR) RETURN NUMBER
AS
   V_COUNT NUMBER;
   V_RESULT NUMBER;
   FUNCTION SEQUENCIAL_BANDEIRA(P_NMBANDEIRA IN VARCHAR) RETURN NUMBER
   AS
      V_SEQBANDEIRA NUMBER;
   BEGIN
      SELECT NRBANDEIRAVAN
        INTO V_SEQBANDEIRA
        FROM BANDEIRAVAN
       WHERE NMCONTROLE LIKE '%'||P_NMBANDEIRA||'%';
      RETURN V_SEQBANDEIRA;
   END;
BEGIN
   V_RESULT := -1;
   IF INSTR(P_NMPRODUTO, 'MASTER') > 0 OR
      INSTR(P_NMPRODUTO, 'MAESTRO') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('MASTER');
   ELSIF INSTR(P_NMPRODUTO, 'VISA') > 0 OR
      INSTR(P_NMPRODUTO, 'ELECTRON') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('VISA');
   ELSIF INSTR(P_NMPRODUTO, 'ELO') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('ELO');
   ELSIF INSTR(P_NMPRODUTO, 'DINERS') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('DINERS');
   ELSIF INSTR(P_NMPRODUTO, 'AMEX') > 0 OR
         INSTR(P_NMPRODUTO, 'AMERICAN') > 0 OR
         INSTR(P_NMPRODUTO, 'EXPRESS') > 0 OR
         INSTR(P_NMPRODUTO, 'AME') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('AMEX');
   ELSIF INSTR(P_NMPRODUTO, 'DISCOVER') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('DISCOVER');
   ELSIF INSTR(P_NMPRODUTO, 'GOOD') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('GOOD');
   ELSIF INSTR(P_NMPRODUTO, 'SODEX') > 0 OR
      INSTR(P_NMPRODUTO, 'SDX') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('SODEXO');
   ELSIF INSTR(P_NMPRODUTO, 'VR') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('VR');
   ELSIF INSTR(P_NMPRODUTO, 'BANE') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('BANESCARD');
   ELSIF INSTR(P_NMPRODUTO, 'CAB') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('CABAL');
   ELSIF INSTR(P_NMPRODUTO, 'GREEN') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('GREEN CARD');
   ELSIF INSTR(P_NMPRODUTO, 'VIST') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('AVISTA');
   ELSIF INSTR(P_NMPRODUTO, 'POLI') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('POLICARD');
   ELSIF INSTR(P_NMPRODUTO, 'VALE') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('VALE');
   ELSIF INSTR(P_NMPRODUTO, 'JCB') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('JCB');
   ELSIF INSTR(P_NMPRODUTO, 'CREDSYSTEM') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('CREDSYSTEM');
   ELSIF INSTR(P_NMPRODUTO, 'HIPER') > 0 THEN
      V_RESULT := SEQUENCIAL_BANDEIRA('HIPER');
   ELSE
      V_RESULT := SEQUENCIAL_BANDEIRA('DESCONHECIDA');
   END IF;
   RETURN V_RESULT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('BUSCA_BANDEIRA_CNC','6.10.000'); END;
/
