[Dica] Converter BOOLEAN para Numérico.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Esta função DIUTIL.BOOL_TO_INT recebe um valor booleano e retorna em numérico.

Selecionar tudo

SQL> set serveroutput on
SQL> declare v boolean;
  2  begin
  3    v := true;
  4    dbms_output.put_line( 'True  retorna '||sys.diutil.bool_to_int(v) );
  5    v := false;
  6    dbms_output.put_line( 'False retorna '||sys.diutil.bool_to_int(v) );
  7  end;
  8  /
True  retorna 1
False retorna 0

PL/SQL procedure successfully completed.

SQL> 

Funciona também para comparações:

Selecionar tudo

SQL> begin
  2    dbms_output.put_line( sys.diutil.bool_to_int(1=1) );
  3    dbms_output.put_line( sys.diutil.bool_to_int(1=2) );
  4  end;
  5  /
1
0

PL/SQL procedure successfully completed.

SQL> 
Infelizmente, não funciona dentro de um SQL diretamente:

Selecionar tudo

SQL> select sys.diutil.bool_to_int(1=1) from dual;
select sys.diutil.bool_to_int(1=1) from dual
                               *
ERROR at line 1:
ORA-00907: missing right parenthesis


SQL> select sys.diutil.bool_to_int(true) from dual;
select sys.diutil.bool_to_int(true) from dual
                              *
ERROR at line 1:
ORA-00904: invalid column name
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes