Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
problema con SP en MySQL

Hola gente, nuevamente acudiendo a uds. por un problema de sintaxis en Stored Procedures con MySQL. El problema en cuestion es la sintaxis IF/ELSE
quisiera un sencillo ejemplo de como se realiza un simple if/else ya que la sintaxis varia de SQL Server / Interbase que es lo que mas 'manejo'.

Bueno es todo por el momento. Desde ya muchas gracias.
Saludos
Responder Con Cita
  #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
Poder: 23
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
  #3  
Antiguo 03-03-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Gracias Poli

Respondo un poco tarde, porque ando muy desconectado ultimamente.
muchas gracias por el ejemplo, y mi problema era el END IF. Como se les ocurrio poner END IF;?, juas, probe con begin, end y demas posibles causas pero nunca me hubiera imaginado un end if, y el mensaje de error decia algo asi como que busque el manual porque esta mal, pero doooonde ??.

En fin viejo, muchas gracias como siempre.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con acentos con PHP y MySQL Vinicio PHP 5 15-04-2009 10:06:45
Problema al conectar con MySQL Sven Conexión con bases de datos 7 09-02-2007 04:40:23
Problema con php y mysql marcoev PHP 5 09-12-2006 04:28:07
problema con MonthName en MYSQL ach_666 Conexión con bases de datos 1 03-05-2006 01:31:44
Problema con myodbc+ado+mysql crievep Conexión con bases de datos 2 06-04-2006 23:46:05


La franja horaria es GMT +2. Ahora son las 18:44:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi