Pular para o conteúdo
  • Este tópico contém 9 respostas, 6 vozes e foi atualizado pela última vez 16 anos, 6 meses atrás por Sergio Willians.
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #87034
    Anônimo

      Bom dia,
      Estou precisando fazer um Decode para tratar o retorno de uma função, porém ela retorna um boolean, e pelo que sei o comando Decode não trabalha com esse tipo de dado, tentei tb com o comando Case, mas também não consegui pelo mesmo motivo.
      Alguém sabe como resolver esse problema?

      #87037
      David Siqueira
      Participante

        Cara eu não entendi a sua dúvida?..Você quer dar um tratamento para um campo BOLEAN onde as opções só podem ser TRUE ou FALSE?..Porque razão seria isso?…Creio que isso não seja possível, eu pelo menos desconheço.

        Abcs.

        David

        #87038
        Anônimo

          não é isso, vou explicar melhor:

          Eu tenho uma função que retorna um booleano;
          Eu preciso fazer um select, que retornará valor “x”, se o resultado da função for true e valor “y” se o resultado da função for false, para isso eu tentei usar o decode, porém decode não trata valores booleanos, por isso não estou conseguindo fazê-lo.;

          #87039
          Avatar photoRegis Araujo
          Participante

            Opa.. Desculpa me intrometer…

            Ajax, será que ao inves da sua funcão retornar um valor true ou false vc retorne uma string T ou F ?

            Assim..


            ...

            if (valor) then
            Result := 'T';
            elsif
            Result := 'F';
            end if;

            ...

            Return(result);

            ...

            Ai no seu decode ficaria assim..


            decode(functionboolean(valor),'T','VERDADEIRO','F','FALSO')

            Bom.. espero que a idéia ajude…

            #87040
            Rodrigo Mesquita
            Participante

              vc pode fazer assim

              sys.diutil.bool_to_int(funcao);

              ele retorna assim

              0 false
              1 true
              null nulo

              ai vc pode fazer um decode a partir desses valores.

              #87043
              David Siqueira
              Participante

                Boa Rodrigo e Regis
                No Sql Server pelo fato dele não ter variaveis do tipo BOOLEAN a galera usa char(1), e ai faz os tratamentos devidos em alguns casos.

                Abraço atodos.

                David

                #87044
                Avatar photoLeonardo Litz
                Participante

                  Você tb pode user um case

                  select case when a then
                  ‘verdadeiro’
                  else
                  ‘falso’
                  end
                  from dual

                  vlw Leonardo Litz

                  #87047
                  Sergio Willians
                  Mestre

                    Me corrijam se eu estiver errado…mas a package sys.diutil.bool_to_int() só funciona dentro de bloco PL/SQL.

                    Pelo que eu entendi, o caro colega quer fazer isso diretamente na query.

                    #87049
                    Rodrigo Mesquita
                    Participante

                      é verdade, esta função não funciona dentro de um sql.

                      mais para resolve isso é só criar uma funcão que receba os parametros para executar a sua função e retornar o resultado em inteiro.

                      Function teste(p1 in number, p2 in number) return number
                      declare
                      result_bol boolean;
                      result_int number;
                      begin
                      — Call the function
                      result_bol := funcao_booleana(p1,p2);
                      result_int := sys.diutil.bool_to_int(result);
                      return result_int;
                      end;

                      depois chamar essa funcao no select

                      select testes(parametro1,parametro2) from

                      #87052
                      Sergio Willians
                      Mestre

                        Exatamente !
                        Eu tive um problema uma vez com uma function que retornava booleano e eu precisava utilizá-la em uma query.
                        Como não poderia alterar o objeto, utilizei uma técnica super-ninja de workaround. Fiz uma function que chamava aquela function e retornava varchar ! rs
                        Não é o mais adequado, mas funcionou !

                      Visualizando 10 posts - 1 até 10 (de 10 do total)
                      • Você deve fazer login para responder a este tópico.