1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

SQL ou Pl/SQL geração de String random em Hexadecimal

Discussão em 'Programação' iniciada por SunsetRider, 14 de Dezembro de 2006. (Respostas: 4; Visualizações: 2542)

  1. SunsetRider

    SunsetRider Power Member

    Boas pessoal

    preciso de gerar para um campo específico numa tabela uma string hexa do genero 'FFFFFF' (Os varios tipos de cores)

    O que eu pretendo é um script que faça em PL/SQL ou em SQL simples um update para N registos tipo Ex. 1000 Registos na tabela.

    thx
     
  2. KiKas

    KiKas Power Member

    tenta fazer tudo em sql, ao fazeres em plsql estás a fazer transicoes de contexto entre a BD SQL e o motor de execução de PLSQL o que para operações complexas diminui muito a performace.

    O lema é: Se é possivel fazer em sql não faças em plsql.

    isto não quer dizer que não facas um procedimento/packages ao algo do género, mas lá dentro tenta por o maximo de logica de acesso aos dados dentro do proprio query de sql.

    E pela minha experiencia, quase tudo é possivel de fazer num query de sql.

    para o teu caso ex.

    update tabela t
    set t.hexColor=convertTohex(t.hexcolor)
    where t.coluna_xpto=condicao_xpto;

    commit;
     
    Última edição: 14 de Dezembro de 2006
  3. SunsetRider

    SunsetRider Power Member

    update tabelaXPTO t
    set t.hexColor=convertTohex(t.hexcolor)
    where t.cd_cor = 'FFFFF'

    o gajo ao executar isto dá erro.

    ora-00904: "ConverttoHEX": identificador inválido.

    Alem disso eu kero meter cores aleatorias. tipo usando o rand(), ou algo parecido.
     
  4. SunsetRider

    SunsetRider Power Member

    já agora tu usas o hexcor por alguma razão específica ? normalmente o

    SET tens q definir o campo que queres actualizar. o que tu dizes é que queres actualizar o
    campo hexcolor isso na minah tabela nao existe só existe o CD_COR é aí q eu defino as cores, por default nesse campo tenho o 'FFFFF' que indica que a cor dakele "Registo" é branco, com base nisso quero fazer um script que gere aleatoriamente cores para todos os registos.
     
  5. KiKas

    KiKas Power Member


    lol.

    Aquilo era um exemplo ficticio. Eu não conheco o teu modelo de dados nem o problema especifico.

    para gerares valores aleatorios podes usar o package DBMS_RANDOM

    no teu caso por exemplo

    select dbms_random.string('X',6) from dual;

    irá gerar uma string alfanumerica com a extensão de 6 caracteres

    o meu concelho é encapsulares um select deste tipo numa função da BD, por exemlo geraCorAleatoria

    nessa função verificas ainda que os caracteres devolvidos são coerentes com o formato hexadicimal, se as letras não forem compativeis, substitui por umas que sejam.


    depois no teu query de update podes fazer por exemplo assim:

    update minha_tabela t
    set t.cd_cor=geraCorAleatoria
    where t.coluna = condicao_xpto
     
    Última edição: 14 de Dezembro de 2006

Partilhar esta Página