Miltão Blz... :) Ainda bem que já criaram um ferramental para tratar isso, né?
Na minha humilde opinião, misturaram 2 coisas: tabela de domínio X codificação considerando vetor de bits. Deveriam usar uma coisa ou outra. [ ] André Santos Em 27 de maio de 2014 13:19, 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > Beleza André! > > Cara, depois da sugestão do Gaudêncio eu fui vasculhar nas funções > existentes na nossa base, e achei a função pronta! > > Já tá pronta e funcionando... outro cara da minha empresa já tinha feito > (só que ele não me respondeu antes porque tá viajando). > > Obrigado! > > > Em 27 de maio de 2014 13:11, Andre Santos > andre.psantos...@gmail.com[oracle_br] > <oracle_br@yahoogrupos.com.br> escreveu: > > >> >> Miltão >> >> Fizeram uma implementação tratando os códigos como posições de "bits" >> (imaginemos que dentro de um "byte"). >> 0001 [bin] = 1 [dec] --> "Produto vencido" >> 0010 [bin] = 2 [dec] --> "Produto bloqueado manualmente" >> 0100 [bin] = 4 [dec] --> "Produto bloqueado para inventário" >> 1000 [bin] = 8 [dec] --> "Produto bloqueado por avaria" >> >> Para conseguir decodificar, pode usar a função BITAND, que faz uma >> operação "AND" binária nos valores. >> >> Estou meio na correria agora... mas depois poderia tentar montar um >> exemplo. >> Talvez algum exemplol na documentação do Oracle já seja útil para seu >> caso. >> >> [ ] >> >> André Santos >> >> >> >> Em 27 de maio de 2014 12:13, Emerson dos Santos Gaudêncio >> emerson.fen...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br>escreveu: >> >>> >>> >>> Milton é possível fazendo um case na query com as variações ou >>> utilizando uma função que retorne as decrições conforme a situação: >>> >>> Exemplo 1: >>> >>> create or replace view vw_produto_situacao as >>> select id_produto, descricao_produto, situacao, >>> case when >>> situacao = 1 >>> then >>> 'Produto vencido' >>> when >>> situacao = 2 >>> then >>> 'Produto bloqueado manualmente' >>> when >>> situacao = 3 >>> then >>> 'Produto vencido/Produto bloqueado manualmente' >>> when >>> situacao = 4 >>> then >>> 'Produto bloqueado para inventário' >>> when >>> situacao = 5 >>> then >>> 'Produto vencido/Produto bloqueado para inventário' >>> when >>> else >>> 'Produto sem situacao informada' >>> end descricao_situacao >>> from tbproduto; >>> >>> >>> Exemplo 2: >>> >>> create or replace view vw_produto_situacao as >>> select id_produto, descricao_produto, situacao, >>> fnc_get_descricao_situacao(situacao) as descricao_situacao >>> from tbproduto; >>> >>> >>> Bom acredito que podem existir outras formas , mais ambas poderiam lhe >>> ajudar. >>> >>> Att, >>> Emerson >>> >>> >>> Em 27 de maio de 2014 10:51, 'Milton Bastos Henriquis Jr.' >>> miltonbas...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br>escreveu: >>> >>> >>>> >>>> Bom dia amigos! >>>> >>>> Tenho um probleminha aqui e não sei se existe solução usando SQL. >>>> Caso alguém consiga resolver, agradeço muito! >>>> >>>> Duas tabelas. >>>> >>>> Primeira tabela: SITUACAO >>>> A tabela "Situação" tem um campo ID e um campo "Descrição". >>>> O campo ID é sempre potência de 2: >>>> >>>> ID Descrição >>>> 1 Produto vencido >>>> 2 Produto bloqueado manualmente >>>> 4 Produto bloqueado para inventário >>>> 8 Produto bloqueado por avaria >>>> >>>> Inventei essas descrições acima pra ilustrar o exemplo. >>>> >>>> Numa outra tabela, tabela ESTOQUE, eu tenho um campo >>>> de Situação. Exemplo: >>>> >>>> ID Produto Situação >>>> 1 Cerveja 2 >>>> 2 Picanha 5 >>>> 3 Alcatra 9 >>>> 4 Maminha 7 >>>> >>>> O campo situação mostra a soma de todos os tipos. >>>> A picanha está com situação 5 (4 + 1), ou seja, o produto está Vencido >>>> e também está bloqueado para inventário. >>>> >>>> >>>> Bom, tudo isso já está implementado e funcionando. >>>> >>>> A minha dúvida vem abaixo.... >>>> >>>> Eu quero criar uma VIEW que mostre num campo SITUAÇÃO todos os >>>> bloqueios desse item do estoque concatenados. >>>> >>>> Isso é possível? >>>> >>>> Ficaria assim: >>>> >>>> 1 Cerveja 2 Produto bloqueado manualmente >>>> 2 Picanha 5 Produto vencido|Produto bloqueado para inventário >>>> 3 Alcatra 9 Produto vencido|Produto bloqueado por avaria >>>> 4 Maminha 7 Produto vencido|Produto bloqueado manualmente|Produto >>>> bloqueado para inventário >>>> >>>> >>>> É possível fazer isso apenas com uma query para criar uma View? >>>> >>>> >>>> >>> >> > >