Que tal? Tengo un procedimiento almacenado donde realizo 3 INSERT IMPORTANTES en un solo SP, a traves de una aplicacion en DELPHI utilizando componentes ADO. Queria saber como puedo hacer para que, en caso de realizarce los 3 INSERT CORRECTAMENTES, mysql me envie un msj de EXITO por ej, y lo pueda interceptar en delphi para tirar un mensaje en la aplicacion de EXITO. Y en el caso de algun error (como caida del servidor por ej) que NO me realice ningun INSERT y deshaga todas las operaciones realizadas, y obviamente me envie un msj de ERROR a mi aplicacion asi poder mostrar en DELPHI al usuario que ha ocurrido un error. Lei acerca de transacciones, pero no se bien donde incluirlas en mi codigo. Les dejo mi Codigo SQL
Código SQL
[-]-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `acta_alta`(
in p_actanum int,
in p_actaserie varchar(2),
in p_actafecha Date,
in p_actahora varchar (5),
in p_offdni int,
in p_empresaid int,
in var1 int,
in var2 int,
in var3 int,
in var4 int,
in var5 int,
in var6 int,
in var7 int,
in var8 int,
in var9 int,
in var10 int,
in p_vehicledom varchar (45),
in p_lugarid int,
in p_actanumcalle varchar (45),
in p_causanum int,
in p_causafecha date,
in p_usu int
)
BEGIN
INSERT INTO acta (actanum, actaserie, actafecha, actahora, actanumcalle, offdni, empresa_id, vehicledom, lugar_id, causanum, causafecha)
VALUES (p_actanum, p_actaserie, p_actafecha, p_actahora, p_actanumcalle, p_offdni, p_empresaid, p_vehicledom, p_lugarid, p_causanum, p_causafecha);
if var1 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var1);
end if;
if var2 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var2);
end if;
if var3 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var3);
end if;
if var4 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var4);
end if;
if var5 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var5);
end if;
if var6 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var6);
end if;
if var7 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var7);
end if;
if var8 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var8);
end if;
if var9 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var9);
end if;
if var10 >0 then
INSERT INTO actabreach (actanum, actaserie, breach_id)
VALUES (p_actanum, p_actaserie, var10);
end if;
INSERT INTO causa (causanum, causafecha)
VALUES (p_causanum, p_causafecha);
INSERT INTO audit_acta (tipoact, actanum_new, actaserie_new, actafecha_new, actahora_new, usu_id, fecha, hora)
VALUES ('I', p_actanum, p_actaserie, p_actafecha, p_actahora, p_usu, CURRENT_DATE(), CURRENT_TIME());
END
Muchas gracias y saludos