-- By Borges, M.A.
-- in Aug-08-2001
DECLARE
AUX VARCHAR2(80);
VAR1 VARCHAR2(80) DEFAULT 'ASDF ASDFASD';
VAR2 VARCHAR2(80) DEFAULT 'ASDF ASDFASDB';
-- Esta é a função que você quer.
-- Como você pode ver, não importa a variavel utilizada. O ORACLE
-- faz a conversão automáticamente
-- O segredo é só trabalhar com char e converter depois
FUNCTION DECIDE( COND BOOLEAN, RETURN1 VARCHAR, RETURN2 VARCHAR)
RETURN VARCHAR2
AS
BEGIN
IF COND THEN
RETURN RETURN1;
ELSE
RETURN RETURN2;
END IF;
END;
-- Só retorna uma string
FUNCTION STR_FUNC
RETURN VARCHAR2
AS
BEGIN
RETURN 'STRFUNC';
END;
-- Só retorna um float
FUNCTION NUMBER_FUNC
RETURN NUMBER
AS
BEGIN
RETURN 1 / 3;
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(DECIDE( ('A' = 'B'), SYSDATE, USER ));
DBMS_OUTPUT.PUT_LINE(DECIDE( ('A' = 'A'), SYSDATE, USER ));
DBMS_OUTPUT.PUT_LINE(DECIDE( (11 > 10), 1500, 1600 ));
DBMS_OUTPUT.PUT_LINE(DECIDE( (1 <> 1), STR_FUNC, NUMBER_FUNC ));
DBMS_OUTPUT.PUT_LINE(DECIDE( TRUE, 'TRUE', 'FALSE' ));
END;
> ----- Mensagem original -----
> De: Marco Aurelio ZERBINI SP-ESC [SMTP:[EMAIL PROTECTED]]
> Enviada em: Quarta-feira, 22 de Agosto de 2001 16:58
> Para: '[EMAIL PROTECTED]'
> Assunto: RES: [java-list] Alguem sabe usar isso ( (X >
> Y) ? X : Y ) em um SQL ORACLE ?
>
> Voce pode utilizar o recurso de functions do Oracle como o exemplo
> abaixo:
>
> CREATE FUNCTION fullname (firstname varchar(255),
> lastname varchar(255))
> RETURNS CHAR(61)
> -- fullname concatenates the firstname and lastname
> -- arguments with a single space between.
> BEGIN
> DECLARE name CHAR(61);
> SET name = firstname || ' ' || lastname;
> RETURN ( name );
> END
> /
>
> Neste exemplo ele apenas concatena firstname com lastname, mas voce
> pode
> colocar qualquer teste no corpo da funcao.
>
> Para utilizar a funcao:
>
> select fullname(first,last) from emp;
>
>
> sds
> Marco Zerbini
>
>
>
> >
> >
> > > Pessoal
> > >
> > > Tenho que usar um teste no meu SQL para o Oracle.
> > > No oracle nao existe (que eu saiba) uma funcao
> > > tipo "IIF" do FoxPro.
> > > Existe a funcao Decode, mas nao serve por que tenho
> > > que testar (>,<,<=,>=...) e o Decode so testa igualdade.
> > > Alguem ja criou alguma funcao "Java" no Oracle que
> > > simule um Iff([condicao],[Retorno true],[Retorno false]) ?
> > > Obs: Os retornos podem ser datas, strings, numeros.
> > > Existe outra alternativa ?
> > >
> > > Obrigado.
> > >
> > >
> > > ------------------------------ LISTA SOUJAVA
> > ----------------------------
> > > http://www.soujava.org.br - Sociedade de Usuários Java da
> > Sucesu-SP
> > > dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> > > regras da lista: http://www.soujava.org.br/regras.htm
> > > para sair da lista: envie email para
> > [EMAIL PROTECTED]
> > >
> > --------------------------------------------------------------
> > -----------
> >
> >
> > _________________________________________________________
> > Do You Yahoo!?
> > Get your free @yahoo.com address at http://mail.yahoo.com
> >
>
> ------------------------------ LISTA SOUJAVA
> ----------------------------
> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para
> [EMAIL PROTECTED]
> ----------------------------------------------------------------------
> ---
>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------