[Hint] 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
  

Poston Fri, 21 May 2004 6:30 pm

I don't know what is the source of this script, was recorded between my e-mail tips-interesting ...

Code: Select all
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>

dr_gori
Location: Portland, OR USA

Thomas F. G

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


Return to PL/SQL

Who is online

Users browsing this forum: No registered users and 7 guests