Ver Mensaje Individual
  #12 (permalink)  
Antiguo 23/04/2008, 01:11
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 11 meses
Puntos: 43
Re: PL/SQL/Procedimiento: Invertir frase por palabras

Mira, como veo que pones interés y lo que intentas es aprender y no que te lo dén mascado, te he hecho un pequeño ejemplo que solo dá la vuelta a la primera palabra, solo tienes que añadir alguna variable en el declare, y en el begin marcado con -- poner loop -- poner un bucle , un par de lineas de código y enseguida lo sacas.

Si lo ejecutas tal cual te lo pongo, el ultimo DBMS_OUTPUT.PUT_LINE te saca """ OCIREP """.

Te queda lo mas facil, ir desglosando la cadena principal tomando como punto de partida los espacios en blanco para sacar las substr's.

Suerte y ya nos contarás :


declare

cadena varchar2 (2200) := 'PERICO DE LOS PALOTES';
CADENA_TMP VARCHAR2(2200);
CADENA_TMP2 VARCHAR2(2200);
POSICION1 NUMBER;
POSICION1 NUMBER;

procedure revertir ( cadena_a_revertir in varchar2 , cadena_revertida out varchar2)
is


v_cadena2 varchar2(888);
v_longitud number;

begin

v_longitud := length(cadena_a_revertir);
loop
v_cadena2 := v_cadena2||substr(cadena_a_revertir,v_longitud,1);
v_longitud := v_longitud-1;
if v_longitud = 0 then
exit;
end if;
end loop;
cadena_revertida := v_cadena2;
end;

BEGIN -- poner loop --

CADENA_TMP := SUBSTR(CADENA,1,INSTR(CADENA,' '));
revertir(CADENA_TMP,CADENA_TMP2);
DBMS_OUTPUT.PUT_LINE(CADENA_TMP2);


END;