Pivot ou CrossTab (invertendo linhas em colunas)

4

Posted on : 02-06-2008 | By : .rafa | In : Banco de Dados, Oracle, PL/SQL, Programação

Imagine você está tentando para criar um jogo de resultados onde os registros precisam ser colunas, ou vice-versa.
A essência, você precisa "girar" os registros em colunas, ou vice-versa.
Muitas vezes há relatorios que exigêm isto e para que não precisarmos de criar functions ou qualquer outra coisa para solucionar isso podemos usar o chamado pivot ou crosstab queries.

Uma questão de pivot simples é realizada fazendo o seguinte:
1. Acrescente algum tipo de conta ou número de fila ao seu questionamento, se necessário para o agrupamento;
2. Então use sua query original como uma sub-query;
3. Use "decode" para se transformar os registros em colunas;
4. Use "MAX ou SUM" para "agrupar" os registros múltiplos em únicas coluna. E não pode ser esquecido de agrupar.

Exemplo prático: Read the rest of this entry »

Criptografando em MD5 no Oracle

0

Posted on : 19-05-2008 | By : .rafa | In : Banco de Dados, Geral, Linux (RH), Oracle, PL/SQL, Programação, Sistemas Operacionais

Esses dias um cliente me solicitou algo para criptografar senhas, já conhecia a package dba_obfuscation_toolkit e ai fui pesquisar mais sobre e achei uma forma otima para criptografar a senha em MD5, assim fiz a função dentro do owner do sistema que faz esta conversão:

CREATE OR REPLACE FUNCTION md5 (valor VARCHAR) RETURN VARCHAR2 IS
   v_input VARCHAR2(2000) := valor;
   hexkey VARCHAR2(32) := NULL;
BEGIN
   hexkey := RAWTOHEX(DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_RAW.cast_to_raw(v_input)));
   RETURN NVL(hexkey,'');
END;
 

Exemplo da utilização:

sql> SELECT md5('senhadorafael') FROM dual;
    70CB17EBF6A8DF8525016F7866075794