Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/09/2012, 08:20
vegaga3
 
Fecha de Ingreso: septiembre-2012
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Exclamación disparador y procedimiento en mysql 5.5

Hola!!!!
xicos estoy haciendo una aplicación que utiliza mysql 5.5.. Lo que trato es de tener una tabla donde se registran unos movimientos de cuenta bancaria (auxiliar_cuentas) y cada vez que se inserta una tupla en la misma, que salte un disparador, el cual llama a un procedimiento donde se calcula el estado de las cuentas. A la hora de crear ambas en mysql, me saltan errores. Estoy un poco perdida, no se donde está el error ni cómo solucionarlo. Os dejo el disparador y el procedimiento a ver si algún alma caritativa me puede exar una mano:

create trigger disparador_cuentas after insert or update or delete on auxiliar_cuentas for each row
tipo auxiliar_cuentas.concepto%TYPE;
cantidad auxiliar_cuentas.cantidad%TYPE;
dia auxiliar_cuentas.dia_modif%TYPE;
hora auxiliar_cuentas.hora_modif%TYPE;
BEGIN
select concepto into tipo from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select cantidad into cantidad from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select dia_modif into dia from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select hora_modif into hora from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
calcular_estado_cuentas(tipo,cantidad,dia,hora);
END disparador_cuentas;


create procedure calcular_estado_cuentas(tipo in varchar, cantidad in int, dia in date, hora in time) as
signo cuentas_ampa.signo%TYPE;
saldo cuentas_ampa.saldo%TYPE;
BEGIN
select signo into signo from cuentas_ampa where identificador=(select max (identificador) from cuentas_ampa);
select saldo into saldo from cuentas_ampa where identificador=(select max (identificador) from cuentas_ampa);

if (signo=’-‘) then
if (tipo=’gasto’) then
saldo := saldo + cantidad;
signo := ‘-‘;
else ------------------------------------------------------------> tipo=’ingreso’
if (cantidad>saldo) then
saldo := cantidad - saldo;
signo := ‘+‘;
else
saldo := saldo - cantidad;
signo := ‘-‘;
end if;
end if;
else ----------------------------------------------------------------------------> signo=’+’
if (tipo=’ingreso’) then
saldo := saldo + cantidad;
signo := ‘+‘;
else ------------------------------------------------------------> tipo=’gasto’
if (cantidad>saldo) then
saldo := cantidad - saldo;
signo := ‘-‘;
else
saldo := saldo - cantidad;
signo := ‘+‘;
end if;
end if;
end if;

insert into cuentas_ampa [signo,saldo,dia,hora] values (signo,saldo,dia,hora);
END calcular_estado_cuentas;