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!!!!!
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


0