Este es el código de uno de mis sps en mysql. Epero te sirva
Código SQL
[-]
Drop Procedure If Exists SpCatEmpleados;
CREATE PROCEDURE SpCatEmpleados
(PsMenu Varchar(25), -- Define el bloque a ejecutar
PnIdEmp Decimal(18,0), -- Define el Id del empleado
PVNombre varchar(100), -- Nombre
PVDirec varchar(100), -- Dirección
PVTelefono varchar(25), -- Número de telefono
PNSueldo Decimal(12,2), -- Sueldo
PVIngreso Varchar(10), -- Fecha de ingreso
PCEstado char(1), -- Estado
PVUsuario VarChar(15) -- Usuario que invoca el procedimiento
)
BEGIN
DECLARE VD_SigIdEmp Decimal(18,0) Default 0; -- Id del usuario
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
Rollback;
SELECT 'Ocurrió un problema al ejecutar la operación.' As Mensaje;
END;
If PsMenu = 'ModDatEmp' Then START TRANSACTION;
Update Sad_TCatEmpleados
Set Emp_VNombre = PVNombre,
Emp_VTelefono = PVTelefono,
Emp_VDirec = PVDirec,
Emp_NSueldo = PNSueldo,
Emp_DIngreso = PVIngreso,
Emp_CEstado = PCEstado,
Emp_VUsuUltMod = PVUsuario,
Emp_DFecUltAct = Now()
Where Emp_Nid = PnIdEmp;
Commit;
Select 'Nada' As Mensaje;
End If;
If PsMenu = 'AgregaEmp' Then START TRANSACTION;
Select IFNULL(Max(Emp_Nid),0) + 1 InTo VD_SigIdEmp
From Sad_TCatEmpleados;
Insert
INTO Sad_TCatEmpleados
(Emp_Nid, Emp_VNombre, Emp_VDirec, Emp_VTelefono,
Emp_NSueldo, Emp_DIngreso, Emp_CEstado, Emp_VUsuAlta,
Emp_DFecAlta,Emp_VUsuUltMod, Emp_DFecUltAct)
Values (VD_SigIdEmp,PVNombre, PVDirec, PVTelefono, PNSueldo,
PVIngreso, PCEstado, PVUsuario, Now(), PVUsuario, Now());
Commit;
Select 'Nada' As Mensaje;
End If;
If PsMenu = 'DameListEmpAct' Then SELECT Emp_Nid, Emp_VNombre
FROM Sad_TCatEmpleados
WHERE Emp_CEstado = 'A';
End If;
If PsMenu = 'DameListEmpActNoAsig' Then SELECT CatEmp.Emp_Nid, Emp_VNombre
FROM Sad_TCatEmpleados As CatEmp
Left Join Sad_TCatUsuarios As CatUsu
On CatEmp.Emp_Nid = CatUsu.Emp_Nid
WHERE Emp_CEstado = 'A' And CatUsu.Emp_Nid is Null;
End If;
END