/**
 * Retorna um novo sequencial da novo código.
 * 
 * @param {Varchar2} P_CDCONTADOR Código da mensagem 
 * @param {Float} P_QTDE quantidade de sequenciais a reservar
 * @param {Float} P_TAM Tamanho da string sequencial a retornar
 */
/*revisada*/
CREATE OR REPLACE FUNCTION RETORNA_NOVO_CODIGO
(P_CDCONTADOR IN VARCHAR2,
 P_QTDE IN FLOAT,
 P_TAM IN FLOAT DEFAULT 20) RETURN VARCHAR2
AS
V_SEQ VARCHAR2(20);
BEGIN
   IF P_QTDE > 0 THEN
      NOVO_CODIGO_NT(P_CDCONTADOR, V_SEQ, NVL(P_QTDE, 1));   
      IF P_TAM < 20 THEN
         IF P_TAM < 0 THEN
            RETURN V_SEQ;
         ELSE
            RETURN SUBSTR(V_SEQ, (-1 * P_TAM));
         END IF;
      END IF;
      RETURN V_SEQ;
   END IF;
   RETURN NULL;
END;
/

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