Ver Mensaje Individual
  #2  
Antiguo 28-02-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Reputación: 25
poliburro Va por buen camino
Este es el código de uno de mis sps en mysql. Epero te sirva


Código SQL [-]

/****************************************************************************
17-Mayo-2007
SpCatEmpleados
Edgar Ramírez Rosas
Procedimiento orientado al manejo del catálogo de usuarios.
Permite su navegación, modificación e inserción
*****************************************************************************/  

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

/**************************************************/ 
/*  de ocurrir un problema en las consultas, se lanzará el siguiente*/ 
/*  manejador                                                                      */ 
/**************************************************/   

DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN 
      Rollback;
      SELECT 'Ocurrió un problema al ejecutar la operación.' As Mensaje;
    END;
  
 /*********************************************/
 /*  Modifica los datos de un empleado en particular            */ 
/*********************************************/   

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;


/**************************************************/ 
/*  Devuelve la lista de empleados activos                                 */ 
/**************************************************/ 

   If PsMenu = 'DameListEmpAct' Then     SELECT Emp_Nid, Emp_VNombre
      FROM Sad_TCatEmpleados
     WHERE Emp_CEstado = 'A';
  End If;    
  
  /****************************************************/ 
  /*  Devuelve la lista de empleados activos que no han sido asignados */ 
 /*****************************************************/  

  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
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 28-02-2008 a las 06:58:44. Razón: error
Responder Con Cita