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?
>>>>
>>>>
>>>>
>>>
>>
>  
>
  • [oracle... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
    • Re... Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]
      • ... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
      • ... Andre Santos andre.psantos...@gmail.com [oracle_br]
        • ... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
          • ... Andre Santos andre.psantos...@gmail.com [oracle_br]
            • ... flavio_brune...@yahoo.com [oracle_br]
              • ... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
                • ... flavio_brune...@yahoo.com [oracle_br]
                • ... Vitor Junior vitorj...@gmail.com [oracle_br]
                • ... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
                • ... flavio_brune...@yahoo.com [oracle_br]
                • ... Vitor Junior vitorj...@gmail.com [oracle_br]
                • ... flavio_brune...@yahoo.com [oracle_br]
                • ... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]

Responder a