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

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: