PL/SQL – Como fazer select para buscar dados por horário no Oracle

Olá, neste exemplo de hoje, vou mostrar como fazer uma consulta SQL em um campo do tipo (DATE) para filtrar os dados por horário.

Criando a tabela (BLOG_TEMP_DATAS) para o exercicio.

create table BLOG_TEMP_DATAS
(
NR_SEQUENCIA NUMBER,
DT_CONSULTA DATE
)

Consultando os dados na tabela

Utilizando o comando to_char(dt_consulta, ‘hh24’), podemos utilizar a condição para filtrar apenas pelo horário. Veja abaixo o exemplo.

select
*
from
blog_temp_datas
where to_char(dt_consulta, ‘hh24′) between ’12’ and ’16’

 select 
   nr_sequencia
  ,to_char(dt_consulta, 'hh24')
  ,dt_consulta
 from 
 blog_temp_datas
 where to_char(dt_consulta, 'hh24') between '12' and '16'

Com o PLSQL Aberto, pressione as teclas CTRL + E, será aberta uma tela com o histórico de todos os comandos executados recentemente.

Este histórico é com base em arquivos arquivos que são gerados em uma pasta temporária e é dali que são mostrados.

Também existe uma tabela no Oracle que grava todos os comandos executados.

A partir dos comandos abaixo é possível consultar, é necessário que usuário tenha privilégios SYS.

SELECT * FROM v$sql
ou
select * from dba_hist_sqltext

Neste artigo estarei demonstrando como instalar o Banco de Dados Oracle 12c no Windows, incluindo a criação de um banco padrão.

Antes de instalar o software, o OUI (Oracle Universal Installer), fará algumas verificações automatizadas para garantir que o computador atenda aos requisitos básicos de hardware e software para a instalação do banco de Dados Oracle. Caso o computador não atenda aos requisitos, uma mensagem será apresentada.

Alguns requisitos básicos são:

Mínimo de 2GB de memória física
Pelo menos 10 GB de espaço em disco

Para começar é necessário fazer o download do Oracle 12c pelo link https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

Após o download você deve descompactar os arquivos baixados;


Neste seção, você iniciará a instalação do Banco de Dados Oracle, acesse a pasta database que você extraiu na etapa anterior e clique duas vezes sobre setup, pode ser necessário permitir a execução do arquivo na UAC.

Na janela que será aberta digite seu endereço de e-mail e a senha do login no site da oracle para receber as notificações dos problemas de segurança por e-mail. Se você não quiser as notificações por e-mail desmarque a opção e clique em próximo.
Nesta Janela selecione uma das opções, em nosso tutorial Criamos e configuramos um banco de dados, então marque a primeira opção.
Escolha a opção de acordo a arquitetura da instalação, sendo; Classe Desktop/Laptop ou servidor.
Neste tutorial utilizaremos a opção Classe Desktop.
Segu
indo a recomendação, iremos marcar a opção para a criar um novo usuário no Windows com apenas os privilégios necessários para a execução da instância do banco de dados.
Nesta janela é realizado a configuração do local de instalação, observe que por padrão é criado um banco de dados chamado pdborcl. Na minha instalação estou alterando para “bento”, você pode deixar com o padrão ou alterar.
Digite a senha para a administração do Banco de Dados Oracle. Essa senha será utilizados posteriormente para login de administrador SYS e SYSTEM.
O instalador fará as verificações de pré requisitos.
Após as verificações de pré-requisito a janela com o resumo será apresentada, revisa todas as configurações e clique em instalar.
A janela de status será exibida. Esta etapa leva cerca de 15 minutos dependendo da configuração do computador.

Em seguida será aberta a tela do Assistente de Configuração do Banco de Dados.

Ao chegar em 100% será exibida a janela abaixo informando que terminou, caso queira abrir o gerenciamento de senhas para desbloquear outras contas clique no botão.
Após a

Ao terminar você poderá abrir o gerenciador e navegar a partir do endereço https://localhost:5500/em com o usuário SYS.

Após concluir clique em “Fechar”

https://localhost:5500/em

Agora você poderá analisar e verificar a partir dos serviços do Windows a execução dos serviço do Banco de Dados Oracle.

Abra o executar no menu iniciar ou com a tela de atalho Windows + R, e digite Services.msc

Caso reinicie o computador e não consiga acessar o banco de dados, verifique se os serviços estão ativos e funcionando.

Caso queira acessar de outros computadores será necessário liberar a porta 1521 ou 1522 no firewall, instalar o client do Oracle no outro computador e configurar o arquivo TNSNAMES.ora, que normalmente fica localizado em C:\app\OracleHomeUser\product\12.1.0\dbhome_1\NETWORK\ADMIN
Este é o arquivo da instalação do servidor, nas estações de trabalho é necessário ajustar o nome do HOST com o IP ou nome do computador.

Oracle PL/SQL MAX Function

Exemplo prático;

Criando a tabela de funcionário.

<pre lang="sql" escaped="true">
create table FUNCIONARIO

(
NM_FUNCIONARIO VARCHAR2(150),
NR_CHAPA       NUMBER,
DT_CONTRATACAO DATE
)

</pre>

 

oracle_max_tb_funcionario

Exemplo de uso da função max para obter o maior número de chapa.

max

Tabela onde está os valores  salários e competências

<pre lang=’sql’ line=’1′>

create table BENTO.FUNC_SALARIO
(
DT_COMPETENCIA     DATE,
DT_INICIO_VIGENCIA DATE,
DT_FIM_VIGENCIA    DATE,
NR_CHAPA           NUMBER,
VL_SALARIO         NUMBER(15,2)
)

</pre>

 

max_salario

Imaginando uma situação onde é necessário demonstrar o salário em vigência atual.

<pre lang=’sql’ line=’1′>

select
a.NM_FUNCIONARIO
, a.nr_chapa
, b.VL_SALARIO
from
bento.funcionario a
, bento.func_salario b
where a.nr_chapa = b.NR_CHAPA
and b.dt_competencia = ( select max(c.DT_COMPETENCIA)
from bento.func_salario c
where c.NR_CHAPA  = b.nr_chapa
)

</pre>

 

max-maior-salario Situação onde é necessário demonstrar o valor de salário atual e o salário anterior.

valor-salario-anteior

 

 

Hoje me deparei com o erro; ORA-01476 divisor is equal to zero, em um relatório, onde existia o cálculo de divisão.

O problema: Divisão por 0 (zero)

0/0

 

Solução:

CASE

select
case WHEN 0 (var) = 0 then 0
else
50 / 1
end soma
from dual
Resultado: 0

select
case WHEN 1 (var) = 0 then 0
else
50 / 2
end soma
from dual

Resultado: 25

Fonte: http://dba-oracle.com/t_ora_01476_divisor_equa_to_zero.htm

http://stackoverflow.com/questions/15798910/oracle-divisor-is-equal-to-zero

(2014/10)