Obrigado amigos pela ajuda, que foi fundamental.

--- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
>
> Colega, seguinte : primeiro de tudo, o datatype LONG já foi
> DE-SUPORTADO há muito tempo, os manuais Oracle faz anos já avisam
> sobre isso, e realmente LONGs tem N restrições, além de não poder
> participar de WHEREs diretos em SQL, vc REALMENTE deveria estar
> trabalhando com CLOBs se precisa armazenar mais que 4000 bytes numa
> coluna string..... Com LOBs  vc pode a package DBMS_LOB, que contém
> rotinas para pesquisa, pra  obter tamanho, etc, etc...Recomendo
> FORTEMENTE que vc cheque a possibilidade de converter os seus LONGs
> para CLOBs, o manual de LOBs tem o procedimento, e
> http://asktom.oracle.com/pls/asktom/f?
p=100:11:0::::P11_QUESTION_ID:426318778291
> tem uns exemplos.
>  Caso por qquer motivo o recomendado e muito melhor LOB não possa 
ser
> usado no seu caso (digamos, por deficiência da ferramenta de
> programação em uso, ou seja o que for) , eu digo :
>  
>  1. vc PODE SIM pesquisar LONGs num WHERE, mas tal como eu disse 
acima
> via SQL puro não tem como, vc TERIA QUE escrever uma rotina PL/SQL 
que
> abra um cursor incluindo a coluna LONG e leia o LONG pedaço a pedaço
> via DBMS_SQL,
> http://asktom.oracle.com/pls/asktom/f?
p=100:11:0::::P11_QUESTION_ID:665224430110
> contém exemplos
>  
>  ou
>  
>  2. como creio que é sabido, uma coluna VARCHAR2 numa tabela Oracle 
só
> pode ter 4000 bytes no máximo, então a sua idéia de converter o LONG
> para VARCHAR2 implicaria que OU vc tem 100% de absoluta certeza que 
o
> teu LONG tem hoje 4000 caracteres ou menos , OU vc teria vários 
campos
> VARCHAR2, cada um com 4000 bytes do LONG.... O procedimento para se
> converter duma vez o LONG para VARCHAR2 seria vc adicionar via ALTER
> TABLE uma coluna VARCHAR e escrever uma rotina PL/SQL + ou - tipo :
>  
>  BEGIN
>     for r in (select rowid, colunas from tabelacomlong) loop
>        update tabelacomlong SET colunavarchar2 = r.colunalong where
> rowid = r.rowid;
>        ...
>        
> => Já se vc for inventar de querer ter várias colunas VARCHAR2, aí 
(já
> que o SUBSTR não funciona com LONGs) seria novamente usar o 
DBMS_SQL,
> ou (numa outra possibilidade) converter a coluna pra CLOB com o
> procedimento de conversão (package DBMS_LOB, fundamentalmente), e aí
> usar a DBMS_LOB.SUBSTR para ir extraindo os valores pras colunas
> VARCHAR2, num PL/SQL.
> 
> []s
> 
>  Chiappa
>  
> --- Em oracle_br@yahoogrupos.com.br, "jorgelrt1" <jorgelrt1@> 
escreveu
> >
> > Olá amigos
> > 
> > Estou com um problema e gostaria da opnião de vcs. 
> > 
> > Tenho um campo do tipo long e não consigo efetuar pesquisas do 
tipo 
> > LIKE no seu conteúdo. Preciso transformar este campo long para um 
campo 
> > do tipo varchar2. Esse é o problema, não consegui ! Pensei em 
criar uma 
> > outra tabela, mas onde o campo é do tipo long eu colocaria do 
tipo 
> > varchar2. O problema é como posso fazer a população desta nova 
tabela e 
> > passando informações que antes estavam num campo do tipo long 
para 
> > varchar2 ? 
> > 
> > atenciosamente 
> > 
> > Jorge Rodrigues
> >
>


Responder a