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
> >
>