Oracle - Trigger....error recuperacion exacta, correccion

 
Vista:

Trigger....error recuperacion exacta, correccion

Publicado por ALEJANDRO (1 intervención) el 23/03/2014 20:53:10
Buenas tardes a todos, el problema que tengo es el siguiente, me encuentro realizando una pequena bd y estoy usando un trigger para generar registros en una tabla cada vez que inserto un registro en mi tabla principal. los difirentes valores que voy a insertar en la tabla son obtenidos de otras tablas de la base de datos. aca les dejo el codigo del trigger:


create or replace trigger registrocantquim
after insert on pedido
for each row
declare
cantidadcue number;
cantidadtotal number;
idquim number;
tuplas number;
porcentaje number;
pesoqui number;
begin
tuplas := 17;
while tuplas>0
loop
idquim := tuplas;
select asig_qui_prod.porcentaje into porcentaje from asig_qui_prod where asig_qui_prod.idqui = idquim;
select dic_prod.peso into pesoqui from dic_prod where dic_prod.idproducto = :new.idproducto;
cantidadcue := :new.cantidad;
cantidadtotal:= cantidadcue*porcentaje*pesoqui;
insert into cant_qui(idpedido,idproducto,idqui,cantidad)
values
(:new.idpedido,:new.idproducto,idquim,cantidadtotal);
tuplas := tuplas-1;
end loop;
end;


ya hice varias modificaciones, pero ninguna me resulta. entre los diferentes errores:
- la recuperacion exacta devuelve un numero mayor de filas que el solicitado. y error de ejecucion del trigger

cuando modifique algo, me salio tabla mutante. y posteriormente me salio fallo al invalidar y no se pudo invalidar.
por favor agradeceria mucha una ayuda con este problema.

en si lo que deseio hacer, por si es que no queda muy claro, es deseo crear un registro en mi tabla cant_quim, cada vez que se ingresa una tupla a la tabla pedidos. para ello el trigger debe realizar los diferentes calculos que especifique en el codigo, pero noce cual es el problema..por favor help!!!!!
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
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Trigger....error recuperacion exacta, correccion

Publicado por Rafael (328 intervenciones) el 27/03/2014 13:45:28
1. El error que reportas como:

" la recuperacion exacta devuelve un numero mayor de filas que el solicitado. "

Es debido a que alguno de tus dos select esta devolviendo mas de un registro, y lo estas tratando de colocar en una variable... O en su defecto no devuelve registros.

2.Lo de tabla mutante seguramente es que estas en medio de una transaccion (BEGIN TRANS y Aun no has realizado el commit) la transaccion encapsula movimientos de alguna de las tablas relacionadas.

Es muy dificil ayudarte con la escasa información que provees ...
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