Valeu CHiappa ! Esta procedure de exemplo me deu uma boa ideia do que posso fazer ! []s Leticia
-----Mensagem original----- De: jlchiappa [mailto:[EMAIL PROTECTED] Enviada em: quinta-feira, 11 de agosto de 2005 10:13 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: LONG ** nenhuma ** : é restrição documentada que o cacareco dos LONGs não podem servir de parãmetro pras funções built-ins, não podem ser parte de WHERE, necessariamente tão SEMPRE no mesmo bloco que os dados atulhando tudo.... SE é LONG mesmo (e não LONG RAW !!) : se o long é menor que 32 Kb, vc pode carrega-lo numa variável PL/SQL, aí vc o manipula normalmente, senão vc teria que ler por pedaços, via DBMS_SQL, tipo assim (código adaptado do http://asktom.oracle.com) : ==> LONGs de qquer tamanho create or replace procedure showlong( p_query in varchar2, p_name in varchar2, p_value in varchar2 ) as l_cursor integer default dbms_sql.open_cursor; l_n number; l_long_val varchar2(250); l_long_len number; l_buflen number := 250; l_curpos number := 0; begin dbms_sql.parse( l_cursor, p_query, dbms_sql.native ); dbms_sql.bind_variable( l_cursor, p_name, p_value ); dbms_sql.define_column_long(l_cursor, 1); l_n := dbms_sql.execute(l_cursor); if (dbms_sql.fetch_rows(l_cursor)>0) then loop<B> dbms_sql.column_value_long(l_cursor, 1, l_buflen, l_curpos , l_long_val, l_long_len );</B> l_curpos := l_curpos + l_long_len; dbms_output.put_line( l_long_val ); exit when l_long_len = 0; end loop; end if; dbms_output.put_line( '====================' ); dbms_output.put_line( 'Long was ' || l_curpos || ' bytes in length' ); dbms_sql.close_cursor(l_cursor); exception when others then if dbms_sql.is_open(l_cursor) then dbms_sql.close_cursor(l_cursor); end if; raise; end showlong; / ==> isso poderia ser usado no sqlplus (por exemplo ) : set echo on begin showlong( 'select text from all_views where view_name = :x', ':x', 'ALL_VIEWS' ); end; / set echo off ==> exemplo de carga de LONG numa variável PL/SQL : create or replace procedure longsubstr( p_rowid in rowid, p_from in number, p_for in number ) return varchar2 as l_tmp long; begin select LONG_COLUMN into l_tmp from T where rowid = p_rowid; return substr( l_tmp , p_from, p_for ); end; / []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Leticia Souza" <[EMAIL PROTECTED]> escreveu > > Pessoal, > Que função posso utilizar para procurar uma string dentro de um campo long ? > Banco versão 8.1.7 > > Leticia ______________________________________________________________________ Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ Falar com os Moderadores:([EMAIL PROTECTED]) Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar ______________________________________________________________________ Links do Yahoo! Grupos ______________________________________________________________________ Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ Falar com os Moderadores:([EMAIL PROTECTED]) Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar ______________________________________________________________________ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html