El codigo que utilizo para insertar es:
DECLARE
prov number;
nped number;
-- FIN number;
BEGIN
--Comprobamos que se ha indicado el numero de pedido
if nvl(length(:pedidonuevo.pedido#),0)=0 then
bell;
message(' Error indique el numero de pedido ');
raise form_trigger_failure;
end if;
-- Comprobamos que que se ha indicado el proveedor y dicho proveedor existe
if nvl(length(:pedidonuevo.proveedor),0)=0 then
bell;
message(' Error indique el codigo del proveedor ');
raise form_trigger_failure;
end if;
select prov# into prov from Proveedor where Proveedor.prov#=:Pedidonuevo.Proveedor;
--Al seguir sabemos q si existe el proveedor
--Comprobamos que se ha indicado la linea de pedido
if nvl(length(:lineadepedidonuevo.linea),0)=0 then
bell;
message(' Error indique el numero de linea de pedido ');
raise form_trigger_failure;
end if;
--Comprobamos que el codigo del producto
if nvl(length(:lineadepedidonuevo.producto),0)=0 then
bell;
message(' Error indique el codigo del producto ');
raise form_trigger_failure;
end if;
--Comprobamos que el nombre del producto
if nvl(length(:lineadepedidonuevo.nom_producto),0)=0 then
bell;
message(' Error indique el nombre del producto ');
raise form_trigger_failure;
end if;
--Comprobamos que se ha indicado la cantidad
if nvl(length(:lineadepedidonuevo.cantidad),0)=0 then
bell;
message(' Error indique la cantidad ');
raise form_trigger_failure;
end if;
--Comprobamos que la cantidad es mayor que 0
if :lineadepedidonuevo.cantidad<=0 then
bell;
message(' Error la cantidad tiene que ser mayor que 0 ');
raise form_trigger_failure;
end if;
--Si todo ha ido bien hacemos los insert correspondientes
insert into Pedido values(:Pedidonuevo.pedido#,:Pedidonuevo.proveedor, :Pedidonuevo.fecha, :Pedidonuevo.Empleado);
insert into LineadePedido values(:LineadePedidonuevo.linea,:Pedidonuevo.pedido#,:LineadePedidonuevo.producto, :LineadePedidonuevo.nom_producto,:LineadePedidonuevo.cantidad);
--last_record;
--end loop;
bell;
message(' Pedido nuevo grabado ');
commit;
EXCEPTION
WHEN NO_DATA_FOUND THEN
bell;
message(' Error DATOS NO EXISTENTES ');
WHEN DUP_VAL_ON_INDEX THEN
BELL;
MESSAGE('ERROR NO SE PUEDE GRABAR CLAVE DUPLICADA ');
END;
No hay comentarios:
Publicar un comentario