SELECT CAMPO1, CAMPO2, CAMPO3 FROM TABELA WHERE
CAMPO1 = parametro1 AND
IF parametro2 = 0 THEN
CAMPO2 = 0 AND
ELSE
CAMPO2 <> 0 AND
END IF
CAMPO3 = 5;
condição IF dentro do where
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Seg, 28 Jul 2008 9:39 am
- Localização: Niterói - RJ
Pessoal, sou novato em fazer packages no Oracle. Fiz uma aqui, porém, preciso colocar a seguinte condição dentro da minha cláusula where. (segue exemplo abaixo).
Se alguém puder postar exemplo com a sintaxe correta, eu agradeço.
-
- Rank: Analista Júnior
- Mensagens: 82
- Registrado em: Ter, 26 Fev 2008 11:33 am
- Localização: MG e SP
Julian de A. Campagnoli
Treinee, Desenvolvedor Oracle PL-SQL
Treinee, Desenvolvedor Oracle PL-SQL
Tudo bem carlos ????
Brother não é possivel trabalhar com CONDICOES(IF,ELSE ... etc) na cláusula WHERE.
Obs.: Do jeito que você está fazendo sua QUERY além de fazer uma busca ela esta atualizando os registros simultaneamente.
Pelo que entendi você esta fazendo isso em Procedure PL-SQL.
De uma olhada na parte de CURSOR (PL-SQL).
Abraço, qualquer coisa estamos aqui
Brother não é possivel trabalhar com CONDICOES(IF,ELSE ... etc) na cláusula WHERE.
Obs.: Do jeito que você está fazendo sua QUERY além de fazer uma busca ela esta atualizando os registros simultaneamente.
Pelo que entendi você esta fazendo isso em Procedure PL-SQL.
De uma olhada na parte de CURSOR (PL-SQL).
Abraço, qualquer coisa estamos aqui
-
- Rank: Analista Júnior
- Mensagens: 82
- Registrado em: Ter, 26 Fev 2008 11:33 am
- Localização: MG e SP
Julian de A. Campagnoli
Treinee, Desenvolvedor Oracle PL-SQL
Treinee, Desenvolvedor Oracle PL-SQL
Vou postar um exemplo básico para que você vizualize melhor a estrutura de um bloco PL-SQL.
Estrutura de um Bloco PL-SQL
Estrutura de um Bloco PL-SQL
DECLARE
CURSOR cur IS
SELECT *
FROM TABLE
WHERE CAMPO1 = param1;
BEGIN
/* CONDIÇÕES E REGRAS SERIAM TRATADAS AQUI */
IF (CAMPO2 = 0) THEN
...
ELSE
...
END IF;
END;
Abraço
-
- Rank: Analista Júnior
- Mensagens: 82
- Registrado em: Ter, 26 Fev 2008 11:33 am
- Localização: MG e SP
Julian de A. Campagnoli
Treinee, Desenvolvedor Oracle PL-SQL
Treinee, Desenvolvedor Oracle PL-SQL
Desconsidere o exemplo acima por favor. Fazer responder as pressas sai erro. rsrsrsrsrs
DECLARE
CURSOR cur IS
SELECT *
FROM TABLE
WHERE CAMPO1 = param1;
C1 cur%ROWTYPE;
BEGIN
OPEN cur;
LOOP
FETCH cur INTO C1 ;
IF cur%NOTFOUND THEN
EXIT;
ELSE
/* CONDIÇÕES E REGRAS SERIAM TRATADAS AQUI */
END LOOP;
CLOSE cur;
END;
-
- Rank: Analista Júnior
- Mensagens: 91
- Registrado em: Ter, 20 Mar 2007 7:19 pm
- Localização: Campinas - SP
- Contato:
Cordialmente,
João C. Garcia
João C. Garcia
Isso também é uma possível solução...
Só explicando mais detalhado, a query retornará os dados onde o CAMPO1 seja igual ao parametro1 e o CAMPO3 igual a 5, porém se o parametro2 for igual a zero, buscará os dados onde o CAMPO2 é igual a zero, mas se o parametro2 for diferente de zero, buscará os dados onde o CAMPO2 seja diferente de zero.
Só explicando mais detalhado, a query retornará os dados onde o CAMPO1 seja igual ao parametro1 e o CAMPO3 igual a 5, porém se o parametro2 for igual a zero, buscará os dados onde o CAMPO2 é igual a zero, mas se o parametro2 for diferente de zero, buscará os dados onde o CAMPO2 seja diferente de zero.
SELECT CAMPO1, CAMPO2, CAMPO3
FROM TABELA
WHERE CAMPO1 = parametro1
AND ( (parametro2 = 0 AND CAMPO2 = 0) OR
(parametro2 <> 0 AND CAMPO2 <> 0) )
AND CAMPO3 = 5;
-
- Rank: Analista Júnior
- Mensagens: 82
- Registrado em: Ter, 26 Fev 2008 11:33 am
- Localização: MG e SP
Julian de A. Campagnoli
Treinee, Desenvolvedor Oracle PL-SQL
Treinee, Desenvolvedor Oracle PL-SQL
joaogarcia vlw por ter respondido a dúvida,
Eu acabei interpretando errado a questao do nosso amigo carlos.
Na correria acabei interpretando que CAMPO2 estava recebendo valor 0.
Abraço
Eu acabei interpretando errado a questao do nosso amigo carlos.
Na correria acabei interpretando que CAMPO2 estava recebendo valor 0.
Abraço
-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Qui, 07 Ago 2008 2:57 pm
- Localização: SP
Analista/Programador PL/SQL Pleno
é possível usar o decode no where tambem...
colocando esse comando na where, funcionaria!

decode(parametro2,0,0,1) = decode(parametro2,0,campo2,1)
and decode(parametro2,0,1,campo2) = decode(parametro2,0,1,campo2)

-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante