Converter datas do Excel para Oracle

MS Excel usa um formato de data chamado “Serial Date format” ao armazenar e lidar com datas e horas. A “Data serial” é calculada pegando o número de dias entre uma data qualquer e o dia 01/01/1900.

Por que isso é importante para um desenvoledor Oracle ? Se você está criando um documento em PL/SQL que será aberto no Excel, a data ficará incorreta a não ser que você converta antes para o padrão do Excel.

Felizmente, a formula de conversão de datas é muito simples. A seguinte função fará a conversão de uma data no Oracle para o padrão do Excel:

CREATE OR REPLACE FUNCTION convertOracleToSerialDate(p_date DATE) RETURN NUMBER
IS
BEGIN
RETURN (p_date – TO_DATE(’01-JAN-1900?))+2;
END;
/

Read the rest of this entry »

Colunas Virtuais no 11g – Parte 2

Colunas Virtuais no 11g – Parte 2 – Índices e Constraints

Continuando o artigo sobre colunas virtuais no Oracle 11g, veremos outras possibilidades do uso dessa feature.

Se tentarmos inserir dados que resultem em uma coluna virtual duplicada, podemos esperar uma violação de Unique Constraint:

Read the rest of this entry »

Colunas Virtuais no 11g – Parte 1

Oracle suportou expressões armazenadas por muitos anos, em views e índices baseados em função. Mais principalmente, são as views que nos permitem armazenar e modularisar expressões calculadas baseados em outras colunas da tabela.

Em versões mais recentes (a partir do 8i), temos como indexar as colunas baseados em função. (Function based indexes). Agora, a partir da versão 11g, o banco Oracle nos permite também armazenar expressões diretamente nas tabelas como colunas virtuais.

Como veremos neste artigo, colunas virtuais são mais flexíveis que as outras alternativas citadas. Vamos examinar seu uso básico e também considerar alguns outros aspectos dessa nova feature.

Read the rest of this entry »

Trabalhando com Strings no Oracle

Vou agora tentar mostrar como trabalha com string no Oracle… Venho acompanhando alguns Foruns de Desenvolvimento e sempre estou me deparando com questões sobre o correto uso de funções para trabalhar com String…

  1. Concatenando 2 Strings
  2. Colocando a primeira letra do texto como Maiúscula
  3. Transformando o texto em texto Minúsculo e Maiúsculo
  4. Convertendo letras em códigos ASCII
  5. Localizando a posição uma string no meio do texto
  6. Atribuindo dígitos no final e/ou no inicio do texto
  7. Removendo espaços no inicio e/ou fim do texto
  8. Como inverter o texto
  9. Substituindo Strings por outras Strings
  10. Cortando o conteúdo do texto
  11. Descobrindo o tamanho da string
  12. Retornando colunas com valor não nulo
  13. Exemplo da utilização de algumas funções
    • Pesquisando em uma string por um digito e exibindo o resto da string pegando como base esse digito localizado.
    • Repartindo uma string e inserindo um valor no meio.

Read the rest of this entry »

Execução ordenada nas triggers

A partir do Oracle 8i é possível criar mais de uma trigger do mesmo tipo na mesma tabela. Exemplo: duas triggers AFTER EACH ROW on INSERT. O tipo de trigger determina a ordem de execução: As BEFORE são executadas antes, e as AFTER depois. Contudo, como saber qual trigger executará primeiro quando se tem duas AFTER EACH ROW on INSERT ?

Read the rest of this entry »

Utilizando Table of Record

Hoje vamos ver o quanto é bom explorar certos recursos da ferramenta de Desenvolvimento Oracle. Sabe aquela rotina bem dinâmica que você não imagina como poderá resolver? Agora, imagine tentar guardar tudo isso em memória… Melhorou um pouco, correto? Vamos ver como é bom trabalhar com registros de memória no Oracle.

Read the rest of this entry »

Limpar Table of varchar

Essa semana surgiu uma dúvida no forum sobre variáveis TABLE of Varchar: Como zerar um array de varchar ? Aí vai a solução…

Read the rest of this entry »

Transformar linhas do SQL em string delimitada

Essa procedure pode ser muito útil em algumas situações: Ela pega as linhas de uma coluna e retorna cada linha separada por ví­rgula na mesma string.

Read the rest of this entry »

Comparação de Campos com NULL

Sabemos que quando um variável ou um campo no Oracle está NULL, ele não pode ser simplesmente comparado a um outro valor, pois o resultado da compração também será false!

Read the rest of this entry »