terça-feira, 28 de agosto de 2012

Funções NVL e NVL2 do Oracle


Olá Amigos...

Neste post eu vou falar sobre a função NVL() e NVL2()..

NVL é um função de 2 parâmetros que tem por objetivo testar o primeiro parâmetro, se o mesmo for nulo, então retornará o valor do segundo parâmetro caso contrário retorna o valor do primeiro parâmetro.

Exemplificando, se informarmos um campo de um determinado tipo no primeiro parametro do NVL e no segundo informar ZERO, então ao rodar o SQL o valor do primeiro campo for NULO o valor retornado será ZERO.

select NVL(codigo_cliente, 0) as campo from dual;

retorno

campo
-------|
0 |


O NVL2 já nos ajuda um pouco mais por se tratar de um operador "TERNÁRIO" ( não é terneiro tá, é ternário!!!!).

Sua sintaxe é a seguinte:

NVL2(teste, true, false)..

como a primeira função NVL que retorna o valor do segundo parâmetro se o primeiro parâmetro for NULO, o NVL2 retorna o segundo parâmetro se o primeiro não for nulo, ou o valor do terceiro parâmetro se for nulo.
Exemplificando:

select NVL2(codigo_cliente, 1 , 0) from dual;

se codigo_cliente for nulo, então o retorno será 0 caso contrário 1.

isto também pode ser aplicado como teste de filtro depois da clausula WHERE ao inves de testar se o campo é nulo com IS NULL ou IS NOT NULL pode se usar o NVL ou NVL2

Neste SQL eu quero somente os registros onde o código do cliente forem nulos (ONDE OS NULOS SERÃO ZERO... HE HE HE).

SELECT * FROM clientes
WHERE NVL(codigo_cliente,0) == 0;

Claro que você poderia também usar :
SELECT * FROM clientes
WHERE codigo_cliente IS NULL;

OU

SELECT * FROM clientes
WHERE COALESCE(codigo_cliente, 0) == 0 ;

Mas a minha intensão neste post é apresentá-los esta funcionalidade ORACLE.

Abraço a todos.

segunda-feira, 27 de agosto de 2012

Wellcome


Olá pessoal, depois de várias vezes pensar e criar um blog para postar minhas ideias e conhecimento, resolvi tomar um copo de coragem e por a mão na massa (ou os dedos no teclado!! rsrs).
Meu método de aprendizagem é este, eu aprendo e massifico melhor quando consigo explicar oque aprendi, e neste blog eu quero colocar e expor o conhecimento que venho adquirindo ao longo do tempo, e de certa forma também vejo como um meio de levantar debates de melhorias através do comentários postados pelo visitantes.
Espero que curtam este blog, e prometo que estarei sempre postando informações novas sobre as tecnologias que venho conhecendo para que não se torne mais um amontoado de conteúdo sem relevância, só para fazer o indexador da google trabalhar mais (he he he), abraço a todos e vamos lá.