Página 1 de 1

Comando NVL

Enviado: Seg, 15 Mai 2006 12:25 pm
por jctq
Bom dia Gente , estou eu aqui mais uma vez pertubando vocês.
Mas vou lá ....

Estou com um problema aqui em um SQL meu, tenho um parametro aqui no meu Select que pode voltar nulo e caso volte nulo , tenho que pesquisar em outra tabela os possiveis valores para este parametro.

Tentei fazer isso

Selecionar tudo

 NVL (PARAMETRO,'SELECT * FROM TABELA')
Não consegui, queria ajuda de vocês para responder se seria possivel fazer isso de outra maneira ou eu estou usando o comando NVL errado.

Espero uma resposta !!!

E muito obrigado desde já ....
:lol:

Enviado: Sex, 02 Jun 2006 7:57 am
por Valdo
Cara, uma sugestão seria você criar uma função no banco e chama-la quando o parametro fosse null.
Ex.:

Selecionar tudo

SELECT * FROM ra_salesreps
WHERE name IN nvl(null,pk_calcula_cota.get_vendedor(1000))
Espero que isso ajude.

Enviado: Sex, 02 Jun 2006 10:12 am
por dr_gori
Mais fácil ainda:
Pode usar CASE WHEN. Dai ele aceita colocar um sub-select dentro.
Veja o exemplo:

Selecionar tudo

SQL> SELECT 
  2    A.ENAME
  3  , A.COMM
  4  , CASE WHEN A.COMM IS NULL THEN (SELECT B.JOB 
  5                                   FROM EMP B 
  6                                   WHERE A.EMPNO=B.EMPNO)
  7    END CONSULTA 
  8  FROM EMP A
  9  /

ENAME            COMM CONSULTA
---------- ---------- ---------
SMITH                 CLERK
ALLEN             300
WARD              500
JONES                 MANAGER
MARTIN           1400
BLAKE                 MANAGER
CLARK                 MANAGER
SCOTT                 ANALYST
KING                  PRESIDENT
TURNER              0
ADAMS                 CLERK
JAMES                 CLERK
FORD                  ANALYST
MILLER                CLERK

14 rows selected.

SQL> 
:-o