Gerar Código Sequencial com Numero e Ano. Ex: 1/2011

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Bom dia a todos.
Dei uma vasculhada no fórum e não consegui resolver o meu problema.

Necessito de uma função que gere números sequenciais contendo o ano corrente de acordo com o código do produto vendido.

Ex: Produto código: 22 gere código sequencial: 1/2011; 2/2011 ...
Produto código: 23 gere código sequencial: 1/2011; 2/2011 ...

E quando muda o ano deve ser reiniciado este contador.

Ex: 1/2011; 2/2011 (Se mudou o ano então) 1/2012.

Sei que esta pergunda é bem amadora, mais não consigo resolver. :(
Espero ter sido claro na descrição do problema.
Obrigado.
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Amigos, fiz desta forma e deu certo.
Segue o código para compartilhar caso algum outro colega venha ter a mesma dúvida que aminha.

Selecionar tudo

CREATE OR REPLACE
FUNCTION FNC_CODIGO_PRODUTO (
  vê_CODIGO_PRODUTO IN VARCHAR2
)

RETURN VARCHAR2 AS  
  VR_RETORNO VARCHAR2(10);
BEGIN  
  SELECT 
    CASE 
      WHEN MAX(SUBSTR(PRO_CODIGO, 1,  INSTR(PRO_CODIGO, '/')-1)) IS NULL THEN '1' || '/' ||  TO_CHAR(SYSDATE,'YYYY')
      ELSE MAX(SUBSTR(PRO_CODIGO, 1,  INSTR(PRO_CODIGO, '/')-1) + 1 || '/' || (SUBSTR(PRO_CODIGO, INSTR(PRO_CODIGO, '/') + 1, LENGTH(PRO_CODIGO))))
    END CODIGO
  INTO VR_RETORNO
  FROM PRODUTO 
  WHERE PRO_CODIGO = vê_CODIGO_PRODUTO     AND SUBSTR(PRO_CODIGO, INSTR(PRO_CODIGO, '/')+1, 4) = TO_CHAR(SYSDATE,'YYYY');
  
  RETURN  VR_RETORNO;
END FNC_CODIGO_PRODUTO;
:-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes