Pular para o conteúdo

Fóruns SQL e PL/SQL If ou Case dentro do where ??? If ou Case dentro do where ???

#77999
passanha
Participante

    Meu.. olha este ‘GATO’..

    create table MinhaTabela (nr_cliente number,dt_atual date);
    insert into MinhaTabela values (0,sysdate);
    insert into MinhaTabela values (1,sysdate);
    insert into MinhaTabela values (2,sysdate);
    insert into MinhaTabela values (0,sysdate-30);
    insert into MinhaTabela values (1,sysdate-30);
    insert into MinhaTabela values (2,sysdate-30);

    define v_nr_cliente = ‘0’ number;
    accept v_nr_cliente number PROMPT ‘NUM.CLIENTE: ‘;

    select *
    from MinhaTabela mp
    where(&v_nr_cliente != 0 and &v_nr_cliente = mp.nr_cliente) or
    (&v_nr_cliente = 0 and to_date(mp.dt_atual,’DD/MM/YYYY’) = to_date(sysdate,’DD/MM/YYYY’))
    /

    Resultado…

    v_nr_cliente = 0

    SQL> accept v_nr_cliente number PROMPT ‘NUM.CLIENTE: ‘;
    NUM.CLIENTE: 0

    NR_CLIENTE DT_ATUAL


         0 28/12/06
         1 28/12/06
         2 28/12/06
    

    v_nr_cliente = 1

    SQL> accept v_nr_cliente number PROMPT ‘NUM.CLIENTE: ‘;
    NUM.CLIENTE: 1

    NR_CLIENTE DT_ATUAL


         1 28/12/06
         1 28/11/06