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