Función de manejo de varchar2

acamba
11 de Marzo del 2005
Hola. Necesito hacer un tratamiento sobre una variable de tipo varchar2 consitente en contar las palabras que tiene, osea, contar las subcadenas que hay entre espacio y espacio. He buscado por ahí y no he visto ninguna función del tipo strtok de C, así que igual me tengo que hacer yo la función coñazo si no queda más remedio. Escribo ésto por si alguien conoce alguna función de manejo de varchar2 que facilite la tarea. Gracias de antemano.

casi416
11 de Marzo del 2005
Dado que tengo la solución ahí va por si a alguien le viene bien:

DECLARE

cad_tmp varchar2(128);
nu_espacios integer;

BEGIN

nu_espacios := 0;
cad_tmp := trim(' ' from ' vamos a ver cuantas palabras tiene ésto ');

WHILE instr(cad_tmp, ' ') <> 0 LOOP
nu_espacios := nu_espacios + 1;
cad_tmp := trim(substr(cad_tmp, instr(cad_tmp, ' ') + 1));

END LOOP;

-- El numero de palabras es el numero de espacios más 1.
dbms_output.put_line('Hay ' || TO_CHAR(nu_espacios + 1) || ' palabras.');

END;