[Dica] FNC_WORD_WRAP

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Não sei qual é a origem desse script, estava gravado entre os meus emails de dicas-interessantes...

Selecionar tudo

create or replace
  function fnc_word_wrap( p_string in varchar2, p_len in number default 65 )
  return varchar2
  as
      l_string    long default replace( p_string || chr(10), chr(9), '    ' );
      l_result    long default NULL;
      l_piece     long;
      l_ws        varchar2(25) default ' ' || chr(9);
      l_sep       varchar2(5) default NULL;
      n           number;
 begin
     loop
        exit when l_string is NULL;

        n := instr( l_string, chr(10) );
        l_piece := substr( l_string, 1, n-1 );
        l_string := substr( l_string, n+1 );

        loop
             exit when l_piece is NULL;

             n := length(l_piece);
             if ( n > p_len ) then
                n := instr( substr(
                           translate(l_piece,l_ws,rpad(' ',length(l_ws))),
                                  1, p_len ), ' ', -1);
                if ( nvl(n,0) = 0 ) then
                      n := p_len;
                end if;
             end if;
             l_result := l_result || l_sep || substr( l_piece, 1, n );
             l_sep := chr(10);
             l_piece := substr( l_piece, n+1 );
         end loop;
     end loop;
     return l_result;
 end;
/


SQL> select fnc_word_wrap('Bom dia, estamos testando essa função que deve deixar esse texto em mais
de uma linha',30) texto from dual
  2  /

TEXTO
--------------------------------------------------------------------------------
Bom dia, estamos testando
essa função que deve deixar
esse texto em mais de uma
linha


SQL> 

Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 12 visitantes