HELP!

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
CrecK
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 28 Fev 2007 9:30 am
Localização: Guarulhos - SP

Bom dia pessoal..


Bom, eu estou com um problema e gostaria de saber se vocês poderiam me ajudar.


Eu preciso fazer uma função que me retorne um determinado valor.


Segue abaixo o exemplo:

Eu vou precisar pegar de pegar os SEGUNDOS correntes de um campo data no início e fim do programa, por exemplo..

11:24:38

Eu preciso armazenar só os SEGUNDOS em uma variável e na 2° parte eu preciso fazer o mesmo e subtrair os 2 valores para chegar à um em específico.

Nesse caso precisaria de 2 variáveis para armazenar os segundos do COMEÇO e os segundos do FIM e fazer uma subtração dos 2 valores.. o resultado desses 2 valores seria o retorno da variável.

Como eu posso fazer isso ?
CrecK
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 28 Fev 2007 9:30 am
Localização: Guarulhos - SP

Segue o código que eu usei...

Selecionar tudo

CREATE OR REPLACE FUNCTION FUFEP_SXXX_CALCULA_SEGUNDO(
                              V_DT_DAT_INI DATE,
						      V_DT_DAT_FIM DATE)       
   RETURN NUMBER IS
   V_SEGUNDOS NUMBER;
   BEGIN
      SELECT to_number(to_date(V_DT_DAT_INI,'DD/MM/YYYY HH:MI:SS') - to_date(V_DT_DAT_FIM,'DD/MM/YYYY HH:MI:SS')) * 24 * 60 * 60 segundos
      INTO   V_SEGUNDOS
	  FROM dual;
	  RETURN V_SEGUNDOS;    
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
	       V_SEGUNDOS := ' ';			 
           RETURN V_SEGUNDOS;         
END FUFEP_SXXX_CALCULA_SEGUNDO;
/

Valeu galera...
emanuel.estumano
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 14 Nov 2006 12:38 pm
Localização: Belém - Pa

Esses valores de segundos do primeiro e do segundo campo representariam o q exatamente? Por exemplo, apesar de não ter analisado profundamente o seu código, percebi que ele retorna o tempo em segundos que se passaram entre uma data e outra. Acho que o problema é que você está subtraindo os segundos da data de início da data de fim, vai ficar negativo (eg.: [28/02/2007 10:00:00 - 28/02/2007 10:01:00] * 24*60*60)
Já se eu tenho um primeiro campo já em segundos, o que ele representaria? Provavelmente não seriam datas e sim tempo decorrido.
Já tentou utilizar a função dbms_utility.get_time?
Você poderia explicar melhor a funcionalidade, aí a gente pode te ajudar!!

Forte abraço

Emanuel Estumano
Responder
  • Informação