Gabriel,

Antes de mais nada, esse teu código está funcionando?
Dando uma olhada aqui eu reparei que:
- a declaração das
variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase
estão incorretas - o tipo de dados foi escrito errado;
- está faltando END LOOP e END IF;

Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo,
com o programa funcionando, como está sendo a saída e como tu
gostaria\entende que deveria ser.

[]´s
Roberto


Em 11 de fevereiro de 2013 14:42, gabriel Tomaz
<gabriel_tom...@hotmail.com>escreveu:

>
> Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código
> ou da dicas para melhorar.
>
> DECLARE
> L_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);
>
> BEGIN
> FOR 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 then
> L_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;
> CC: oracle_br@yahoogrupos.com.br
> To: oracle_br@yahoogrupos.com.br
> From: alisson...@yahoo.com.br
> Date: Mon, 11 Feb 2013 13:24:44 -0200
> Subject: Re: [oracle_br] Re: Duvida
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>       Select subtr('teste',0,1) from dual;
>
>
>
> Nesse caso o resultado seria a letra 't'
>
>
>
> Enviado via iPhone Alisson Luz
>
>
>
> Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com>
> 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: jlchia...@yahoo.com.br
>
> > 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]
>
> >
>
> >
>
> >
>
> > ------------------------------------
>
> >
>
> > ----------------------------------------------------------
>
> >> 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]
>
>
>
> ------------------------------------
>
>
> --------------------------------------------------------------------------------------------------------------------------
> >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]

Responder a