Oracle - insertar datos duplicados --> Update (URGENTE!)

   
Vista:

insertar datos duplicados --> Update (URGENTE!)

Publicado por belfe (1 intervención) el 02/10/2007 18:13:48
Hola.

Tengo una serie de inserts en un fichero de texto. Una vez he ido a ejecutarlos ha empezado a fallar por un problema de restricción única (doy de alta usuarios y algunos ya estaban de alta). Lo que quiero hacer es insertar los usuarios nuevos y realizar un update de los que ya estaban (los que tenían el DNI en la base de datos). He intentado poner insert ignore, pero no me reconoce el comando ignore.

Soy bastante novato en esto del SQL y no tengo los conceptos muy afianzados, si me respondeis tenerlo en cuenta y no deis nada por supuesto (una de las opciones que estoy intentando es hacer un procedure, pero no consigo crearlo bien, y cuando esté bien creado no sabré como ejecutarlo desde el TOAD).

Es bastante urgente, así que la rapidez prima sobre la eficiencia. Al tener las consultas en excel puedo incorporar una columna exception por cada consulta si vale de algo. Tampoco me importaría ejecutar todos los inserts ignorando los errores y luego ejecutar updates de todo. Una de las opciones que he planteado es esta, pero no me compila y cuando me compile no sabré como ejecutarla.

****************************************************************************
create or replace procedure insertar_o_actualizar IS
BEGIN

sentencia insert 1
EXCEPTION
WHEN others THEN null;

sentencia insert 2
EXCEPTION
WHEN others THEN null;

..............
END;
*********************************************************************************
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:insertar datos duplicados --> Update (URGENT

Publicado por Mario Cruz (2 intervenciones) el 02/10/2007 19:57:10
por su puesto creo que con un store seria mas facil revisar la integridad
pero claro debe recibir parametros (los que vas a insertar)

--------------------------------------------------------------------------------------------------------
create or replace procedure insertar_o_actualizar( p_id_usario varchar2
p_nombre varchar2
etc)
is
usuario number; --sirve para saber si el usuario ya existe

begin
select count(*) into usuario
from tablaaconsultar
where id_usuario=p_id_usuario;

if usuario=0 then
inserta....(el codigo para insertar)
else
actualiza...(el codigo para actualizar)

end insertar_o_actualizar
-------------------------------------------------------------------------------------------------------------

debes crear un script para mandar las inserciones al store o hacerlo manualmente si no es mucho, si quieres hacerlo un poco mas profesional te recomiendo un package Toad no es tan complicado tiene una flechita verde en el editor que es para compilar

Saludos.
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

RE:insertar datos duplicados --> Update (URGENT

Publicado por kevin (5 intervenciones) el 04/10/2007 23:54:54
exactly!

those kind of packages are called TABLE HANDLERS they do the inserts/updates stuff more efficient; You can create a unique package named TABLE_HANDLER and add a new procedure for a new table as soon as you need it. it's a good programming practice. =) don't forget it.
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