Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2008, 11:15
Avatar de dropthebass
dropthebass
 
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años, 7 meses
Puntos: 0
PL/SQL/Procedimiento: Invertir frase por palabras

Tengo un problema con un procedimiento que sirve para invertir las letras de una frase pero por palabras, que se le pasa como parámetro.
Ejemplo:

consulta: Tengo un problema
resultado: ogneT nu amelborp

Le he estado dando vueltas y no se como hacerlo. Tengo un procedimiento que invierte una palabra unicamente, es el siguiente:

Código:
CREATE OR REPLACE PROCEDURE reves (cadena VARCHAR2)
AS
cadena_rev VARCHAR2(20);
x NUMBER;
BEGIN
x := LENGTH(cadena);
WHILE x >= 1 LOOP
cadena_rev := cadena_rev || SUBSTR(cadena, x , 1); 
x := x -1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(cadena_rev);
END;
La cuestión es que ahora hay que separa las palabras de la frase y entiendo que deben diferenciarse cuando se llegue a un espacio en blanco. Pero me estoy haciendo unos líos impresionantes.
Lo que he intentado, ques es bastante poco e incompleto es esto:

Código:
CREATE OR REPLACE PROCEDURE reves_frase (cadena VARCHAR2)
AS
paraula_rev VARCHAR2(20);
frase_rev VARCHAR2(20);
caracter VARCHAR2(1);
x NUMBER;

BEGIN

FOR x IN 1..LENGTH(cadena) LOOP
caracter := SUBSTR(cadena,x,1);
IF caracter = ' ' THEN
(...)
ELSE
paraula_rev := paraula_rev || SUBSTR(cadena, x , 1);
(..)
A ver si álguien puede ayudarme o sabe como salir de esta. Gracias de antemano por leerlo. Un saludo