Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2011, 14:31
Avatar de IngAndresMartinez
IngAndresMartinez
 
Fecha de Ingreso: junio-2011
Ubicación: Piedecuesta-Santader-Piedecuesta
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 1
Problema Con Un Procedimiento llamado desde un Trigger

Hola a todos, He estado intentando hacer un ejercicio el cual me pide calcular
la comision a un vendedor por la venta de un producto determinado , He creado el procedimiento y he creado el trigger y me lo deja ejecutar, Sin embargo cuando voy a a realizar un Insert en ventas con el Mismo numero de Vendedor me aparece este aviso
Cita:
Script line: 12 Result consisted of more than one row


Tengo las siguientes Entidades:


Drop table if exists Ventas;
Create table Ventas (
Numero_Venta Integer(10) Primary key not null,
Importe Integer(10) Not null,
Cedula_Vendedor Integer(10)Not null,
Codigo_Producto Varchar(15) Not Null,
Tipo_Producto Varchar(10) Not null
);


Drop table if exists Comisiones;
Create table Comisiones (
Comision_Vendedor Integer(10) Not null,
Cedula_Vendedor Integer(10) Not null
);



Este es el Procedimiento:


Delimiter //
Drop procedure if exists Comisiones;//
Create procedure Comisiones (In Vendedor Integer(10))
Begin
Declare Existe Bool;
Declare Comision Integer(10);
Declare TipoProducto Varchar(15);
Declare Suma Integer(10);

Select Tipo_Producto into TipoProducto from Ventas where Vendedor=Cedula_Vendedor;


If TipoProducto = 'Importado' then
Select sum(Importe) into Suma from ventas WHERE Vendedor = Cedula_Vendedor;
SET Comision =Suma + (Suma * 0.15);
ElseIF
TipoProducto like 'Nacional' then
Select sum(Importe) into Suma from ventas WHERE Vendedor = Cedula_Vendedor;
SET Comision = Suma + (Suma * 0.20);
end if;


Select count(1)>0 into Existe from Comisiones where Vendedor = Cedula_Vendedor;
if existe then
UPDATE Comisiones set Comision_Vendedor = (Comision_Vendedor +Comision) where Vendedor = Cedula_Vendedor;
else
insert into Comisiones values (Comision,Vendedor);
end if;
End;

Select count(1)>0 into Existe from Comisiones where Vendedor = Cedula_Vendedor;
if existe then
UPDATE Comisiones set Comision_Vendedor = Comision where Vendedor = Cedula_Vendedor;
else
insert into Comisiones values (Comision,Vendedor);
end if;
End;


Y aqui esta el Trigger


Delimiter //
Drop trigger if exists Ejemplo6;//
Create trigger Ejemplo6
After Insert on Ventas
For each row
Begin
Call Comisiones(New.Cedula_Vendedor);
End;//
Delimiter


Y estos son los datos que intento Ingresar:

Insert into Ventas values (1,10000,90029192,'Pr001','Importado');
Insert into Ventas values (2,10000,90029192,'Pr002','Nacional');
Insert into Ventas values (3,50000,37918205,'Pr003','Nacional');

Espero alguien me pueda ayudar con este problemita, Gracias !!!!...........