Oracle - problemita

 
Vista:

problemita

Publicado por Jaime (2 intervenciones) el 04/10/2002 22:33:28
Quiero se parar dos apellidos digitados en un solo campo pero siempre me muestra un error, la estructura que estoy utilizando es la siguiente:
DECLARE
LETTER CHAR;
WORD CHAR;
TO_BEGIN NUMBER;
LAST NUMBER := 0;
LENGTH_WORD NUMBER;
WAREHOUSE NUMBER;
BEGIN
TO_BEGIN := 1;
SELECT LENGTH(:APELLIDOS) INTO LAST FROM DUAL;
FOR WAREHOUSE IN TO_BEGIN..LAST LOOP
SELECT SUBSTR(:APELLIDOS,WAREHOUSE,1) INTO LETTER FROM DUAL;
SELECT ABS(ASCII(LETTER)) INTO LENGTH_WORD FROM DUAL;
IF (LENGTH_WORD = 32) THEN
SELECT SUBSTR(:APELLIDOS,1,WAREHOUSE - 1) INTO WORD FROM DUAL;
:ASP_PRIMER_APELLIDO := WORD;
SELECT SUBSTR(:APELLIDOS,WAREHOUSE + 1,LAST)INTO WORD FROM DUAL;
:ASP_SEGUNDO_APELLIDO := WORD;
EXIT;
END IF;
END LOOP;
END;

como resuelvo este pequeño problemita.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemita

Publicado por José Luis (34 intervenciones) el 04/10/2002 23:54:45
Es muy complicado como lo manejas ...

hay un monton de formas de como hacerlo por ejemplo 1:

select nombre
,substr(apellidos,1,decode(instr(apellidos,' '),0,1000,instr(apellidos,' '))) primer_apellido
,substr(apellidos,decode(instr(apellidos,' '),0,1000,instr(apellidos,' ')),1000) segundo_apellido
from usuarios

Salu2 ...

José Luis Coronel
Villahermosa, Tabasco, México
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar