Tratar cadenas de texto con una Function en Oracle

Función que he creado en Oracle y a la qual pasandole una cadena de texto: «nombre1,nombre2,nombre3». Nos los devolveria separados y podriamos hacer el insert de forma individual en la base de datos por ejemplo.

El código de la función es este:

function get_token(
the_list in varchar2,
the_index in number,
delim in varchar2 := ‘,’
)
return varchar2
is
start_pos number;
end_pos number;
begin
if the_index = 1 then
start_pos := 1;
else
start_pos := instr(the_list,delim,1,the_index – 1);
if start_pos = 0 then
return null;
else
start_pos := start_pos + length(delim);
end if;
end if;
end_pos := instr(the_list,delim,start_pos,1);
if end_pos = 0 then
return substr(the_list,start_pos);
else
return substr(the_list,start_pos,end_pos – start_pos);
end if;
end get_token;

En la variable delim le decimos si van a estar separadas por comas o porque delimitador. Un ejemplo simple de su uso es este:

v_contador :=1;

while GET_TOKEN(i_motivonovisita,v_contador,v_separador) is not null

LOOP

insert into tb_motivosnovisita (codvalor,foreignkeyfc,descripcion) values
(GET_TOKEN(i_codmotivonovisita,v_contador,v_separador),i_primarykey,
GET_TOKEN(i_motivonovisita,v_contador,v_separador));

v_contador := v_contador+ 1;

END LOOP;

Esto serviria para hacer un insert en una tabla con los registros que nos vendrian separados por «,»

Espero que sirva de ayuda

validar textarea teniendo en cuenta los saltos de línea

//Función per validar la longitud màxima de un textarea teniendo en cuenta los saltos de línia.

function ismaxlength(obj, longitud_ini) {
var alineas;
var nlineas, longitud;
longitud = longitud_ini;
alineas = obj.value.split(«rn»);
nlineas = alineas.length;
if (nlineas > 0) {
//Si hay saltos de línea hay que tenerlos en cuenta en la longitud máxima
longitud = longitud_ini – ((nlineas – 1) * 2);
}
if (obj.value.length > longitud) {
obj.value=obj.value.substring(0,longitud);
alert(msg.TXTA[0] + longitud_ini + msg.TXTA[1] +’n’);
}
}