Oracle - Error en insert

 
Vista:

Error en insert

Publicado por lorrich (6 intervenciones) el 21/06/2007 10:56:30
Buenos dias.

Tengo un problema con un triger que dependiendo de si existe un dato en una tabla me inserta o me actualiza el dato. La sentencia de update me la realiza bien, pero en la de insert me da error.

Los errores son los siguientes:
ORA-01401:Valor introducido demasiado largo para la columna
ORA-06512:En "ENERGIAS.NOTAS_ACTUALIZACION_PEDIDO",linea 23
ORA-01403:No se han encontrado datos
ORA-04088:Error durante la ejecucion del disparador

El trigger es el siguiente:

DECLARE

TEXTO NOTASPROG.NT_TX1%TYPE;
BEGIN

//Compruebo que se cumple el caso en el que deberia de actualizar el campo
IF (:old.od_obser10!='S' and :new.od_obser10='S' and :new.od_usumod='SUSANA')THEN

BEGIN
//Esta consulta es para comprobar si existe el dato que quiero actualizar, sino existe lo trato en la excepcion insertandolo , que es donde me falla.
SELECT NT_TX1 INTO TEXTO FROM NOTASPROG WHERE NT_USUARIO=:OLD.OD_USUALTA AND NT_PROGRAMA='ped1';

TEXTO:=TEXTO ||CHR(10)||'SE HA AUTORIZADO EL PEDIDO Nº ' || :NEW.OD_SERIE || ' ' || :NEW.OD_CODIGO;

BEGIN
//Si hay algun dato con las condiciones del SELECT actualizo el campo que necesito
UPDATE NOTASPROG SET NT_TX1=TEXTO,
NT_USUMOD=:NEW.OD_USUMOD
WHERE NT_USUARIO=:OLD.OD_USUALTA AND NT_PROGRAMA='ped1';
END;

//Sino existe el campo que necesito actualizar lo inserto
EXCEPTION WHEN no_data_found THEN

BEGIN
TEXTO:='SE HA AUTORIZADO EL PEDIDO Nº ' || :NEW.OD_SERIE || ' ' || :NEW.OD_CODIGO;
INSERT INTO NOTASPROG (NT_USUARIO,NT_PROGRAMA,NT_TX1,NT_USUPROP,NT_USUALTA,NT_USUMOD,NT_USUFECHA,NT_USUOTROS)
VALUES (:OLD.OD_USUALTA,'ped1',TEXTO,:NEW.OD_USUMOD,:NEW.OD_USUMOD,:NEW.OD_USUMOD,SYSDATE,:NEW.OD_USUMOD);
END;
END;
END IF;
END;

Que tengo mal?

Gracias.
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:Error en insert

Publicado por mad (88 intervenciones) el 21/06/2007 11:11:51
Estás intentando introducir un valor demasiado largo para un campo.
Comprueba el tamaño de todos los campos de la tabla y la longitud de los valores que estas volcando, verás que alguno es mas largo de lo que permite el campo.

Espero te sirva.
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