Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da 
dicas para melhorar.DECLAREL_VFRASE              VARCHAR2(240) := '&Digite uma 
Frase.';L_VFRASE_TEST         VARCHAR2(240);L_VFRASE_NOVO         
VARCHAR2(240);L_VQBRLINHA           VARCAHR2(240);L_valor_novo          
VARCAHR2(240);L_TESTE_QBR           VARCAHR2(240);L_FRA_cert            
VARCAHR2(240);L_frase               VARCAHR2(240);L_VFRASE_TEST1        
VARCHAR2(240);BEGINFOR L_VFRASE > 100 LOOPIF DBMS_OUTPUT.put_line('Frase é 
maior que 100 caracteres');L_VFRASE              := INSTR( L_VFRASE,' 
');L_VFRASE_TEST         := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST         := 
0;L_VQBRLINHA           :=  L_VFRASE + L_valor_novo;L_VQBRLINHA           :=  
-1;L_TESTE_QBR           := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE             
  := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT));IF L_VQBRLINHA <10 
thenL_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR);END 
IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line 
(L_TESTE_QBR);dbms_output.put_line 
(L_FRASE);dbms_output.put_line(L_VQBRLINHA);END;To: oracle_br@yahoogrupos.com.br
From: jlchia...@yahoo.com.br
Date: Mon, 11 Feb 2013 16:40:53 +0000
Subject: [oracle_br] Re: Duvida
















 



  


    
      
      
        Bem, a Documentação que eu citei são os manuais Oracle : todos eles 
estão online no site http://tahiti.oracle.com e há um DEDICADO à linguagem SQL 
e seus comandos/funções nativas, lá vc acha tanto a sintaxe quanto uns três ou 
quatro exemplos de cada coisa... Vc não diz a versão mas supondo 11gR2 
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions181.htm#SQLRF06114
 é a ref....

   Sobre o exemplo que vc digitou, se é este trecho :

   

"

    DECLAREL_VFRASE VARCHAR2(240) := '&Digite uma Frase.';L_VFRASE_TEST

VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR

L_VFRASE > 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100

caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE +

L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END;

"



Aonde vc vê SUBSTR nele ? Eu não vejo...

   Anyway, segue ainda outro exemplo exemplificando a utilização do SUBSTR , 
primeiro extraindo uma substring a partir da posição 1 até aonde achar um 
espaço em branco, e depois extraindo uma substring iniciando não em 1, mas 
aonde acahr um espaço em branco, E além disso essa última substring extraída eu 
coloca na variável v_frase , na prática Sobrepondo e perdendo o que eu tinha 
antes : 

   

SQL> set serveroutput on size unlimited;

SQL> DECLARE

  2     v_frase varchar2(200) := 'Frase de teste para Exemplo!';

  3  BEGIN

  4     for i in 1..4 loop

  5        dbms_output.put_line(substr(v_frase, 1, instr(v_frase, ' ')));

  6        v_frase := substr(v_frase, instr(v_frase, ' ')+1);

  7     end loop;

  8     dbms_output.put_line(v_frase);

  9  END;

 10  /

Frase

de

teste

para

Exemplo!



Procedimento PL/SQL concluÝdo com sucesso.



Mas repito, para vc poder entender esse exemplo, plz dá uma estudada no manual 
citado, faça antes os exemplinhos menores que estão no manual, escreva um 
exemplo seu simples variando com um FOR algum dos argumentos do SUBSTR.. É 
assim que se aprende...

  

   []s

   

     Chiappa

         



--- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz  escreveu

>

> 

> 

> Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No 
> exemplo que digitei abaixo esta correto meu raciocínio?  

> To: oracle_br@yahoogrupos.com.br

> From: jlchiappa@...

> Date: Mon, 11 Feb 2013 14:47:54 +0000

> Subject: [oracle_br] Re: Duvida

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

>  

> 

> 

> 

>   

> 

> 

>     

>       

>       

>         Bom, não vou me meter a codificar na prática (não serei 
> desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da 
> linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET 
> LINESIZE 100, temos que :

> 

>   

> 

>   - se a linha é de 100 caracteres e a qtdade de colunas está definida na 
> variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada 
> coluna em caracteres , são pedaços desse tamanho da string original que vc 
> vai ter que extrair

> 

>   - o principal comando para vc extrair uma substring a partir de uma string 
> maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele

> 

>   - não há um "comando" para quebrar linhas no PL/SQL, nem na package 
> DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU 
> inserir na string a ser exibida o(s) caracteres de controle que sinalizam end 
> of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) 
> , enquanto no Linux/Unix é só o CHR(13)

> 

> - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em 
> branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em 
> branco à esquerda da posição de fim da coluna e insreir uma quebra de linha 
> após o espaço, fazendo o restante cair na linha de baixo quando exibido : 
> provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de 
> um caracter 

> 

> 

> 

> A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um 
> esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a 
> gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda 
> versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e 
> erro ...

> 

>   

> 

>    []s

> 

>    

> 

>      Chiappa

> 

> 

> 

> --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz  escreveu

> 

> >

> 

> > 

> 

> > 

> 

> > Alguem pode me ajudar na resolução desse exercício segue como esta ficando:

> 

> > estou usando sql*plus

> 

> > DECLAREL_VFRASE VARCHAR2(240) := '&Digite uma Frase.';L_VFRASE_TEST 
> > VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA 
> > VARCAHR2(240);BEGINFOR L_VFRASE > 100 LOOPIF DBMS_OUTPUT.put_line('Frase é 
> > maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST 
> > := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END;

> 

> > O exercício e o seguinte:Escreva um programa em que dado uma frase e a 
> > quantidade de colunas que podem ser exibidas na tela, faça a quebra de 
> > linhas sem quebrar as palavras.

> 

> > Por exemplo, se passarmos a frase "Um pequeno jabuti xereta viu dez 
> > cegonhas felizes." e pedirmos para ela ser exibida em 20 colunas, teremos 
> > como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. 

> 

> > Grato 

> 

> > To: oracle_br@yahoogrupos.com.br

> 

> > From: gabriel_tomazc@

> 

> > Date: Sun, 10 Feb 2013 15:51:36 -0300

> 

> > Subject: Re: [oracle_br] Duvida

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> >  

> 

> > 

> 

> > 

> 

> > 

> 

> >   

> 

> > 

> 

> > 

> 

> >     

> 

> >       

> 

> >       

> 

> >       Gostaria de fazer usando o sql plus.

> 

> > 

> 

> > 

> 

> > 

> 

> > -----Original Message-----

> 

> > 

> 

> > 

> 

> > 

> 

> > From: Milton Bastos Henriquis Jr.

> 

> > 

> 

> > Sent: 10 Feb 2013 17:53:04 GMT

> 

> > 

> 

> > To: oracle_br@yahoogrupos.com.br

> 

> > 

> 

> > Subject: Re: [oracle_br] Duvida

> 

> > 

> 

> > 

> 

> > 

> 

> > Gabriel, explique ONDE você quer fazer isso.

> 

> > 

> 

> > 

> 

> > 

> 

> > Vc está estudando o que? SQL?

> 

> > 

> 

> > Vc quer fazer isso aí no SQL*Plus?

> 

> > 

> 

> > 

> 

> > 

> 

> > 2013/2/9 gabriel Tomaz gabriel_tomazc@>

> 

> > 

> 

> > 

> 

> > 

> 

> > > **

> 

> > 

> 

> > >

> 

> > 

> 

> > >

> 

> > 

> 

> > >

> 

> > 

> 

> > > Caros , gostaria de saber se podem me ajudar estou iniciando com Oracle e

> 

> > 

> 

> > > estou resolvendo alguns exercícios para aprimorar meus conhecimentos. 
> > > Estou

> 

> > 

> 

> > > com o seguinte dificuldade:

> 

> > 

> 

> > > Dado uma frase e a quantidade de colunas que podem ser exibidas na tela,

> 

> > 

> 

> > > faça a quebra de linhas sem quebrar as palavras.

> 

> > 

> 

> > > Gostaria de saber se existe algum comando para fazer a quebra de linha e

> 

> > 

> 

> > > como ficaria meu bloco?

> 

> > 

> 

> > > desde já agradeço.

> 

> > 

> 

> > >

> 

> > 

> 

> > > [As partes desta mensagem que não continham texto foram removidas]

> 

> > 

> 

> > >

> 

> > 

> 

> > >

> 

> > 

> 

> > >

> 

> > 

> 

> > 

> 

> > 

> 

> > [As partes desta mensagem que não continham texto foram removidas]

> 

> > 

> 

> > 

> 

> > 

> 

> > ------------------------------------

> 

> > 

> 

> > 

> 

> > 

> 

> > ----------------------------------------------------------

> 

> > 

> 

> > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de 
> > >inteira responsabilidade de seus remetentes.

> 

> > 

> 

> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/

> 

> > 

> 

> > ----------------------------------------------------------

> 

> > 

> 

> > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure 
> > >» Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
> > >http://www.oraclebr.com.br/

> 

> > 

> 

> > ---------------------------------------------------------- Links do Yahoo! 
> > Grupos

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> >     

> 

> >      

> 

> > 

> 

> >     

> 

> >     

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> > 

> 

> >                                       

> 

> > 

> 

> > [As partes desta mensagem que não continham texto foram removidas]

> 

> >

> 

> 

> 

> 

> 

>     

>      

> 

>     

>     

> 

> 

> 

> 

> 

> 

>                                         

> 

> [As partes desta mensagem que não continham texto foram removidas]

>





    
     

    
    






                                          

[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 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:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a