Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Procedimiento almacenado

Estas en el tema de Procedimiento almacenado en el foro de Mysql en Foros del Web. buenos dias a todos les traigo una consulta que he buscado la sulucion por varios dias y no he podido continuar. utilizo XAMP Servidor: 127.0.0.1 ...
  #1 (permalink)  
Antiguo 15/04/2015, 11:13
 
Fecha de Ingreso: abril-2015
Ubicación: MEDELLIN
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Exclamación Procedimiento almacenado

buenos dias a todos
les traigo una consulta que he buscado la sulucion por varios dias y no he podido continuar.
utilizo XAMP

Servidor: 127.0.0.1 via TCP/IP
Tipo de servidor: MySQL
Versión del servidor: 5.6.20 - MySQL Community Server (GPL)
Versión del protocolo: 10
Usuario: root@localhost
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)


lo que pasa es que estoy actualmente realizando un proyecto para la u el cual lo estoy haciendo en php y mysql con procedimientos almacenados.

mi problema es que he realizado dos procedimientos almacenados para la administracion de usuarios y son los siguientes;

CREATE DEFINER=`root`@`localhost` PROCEDURE `gestion_usuarios`(
in Usu_codigo int,
in Usu_nombre1 varchar(25),
in Usu_apellidos1 varchar(25),
in Usu_celular1 varchar(25),
in Usu_correo1 varchar(25),
in Usu_telefono1 varchar(25),
in Usu_direccion1 varchar(25),
in Usu_nombre_usu varchar(25),
in Usu_contrasena varchar(25)
)
begin
/*insertar*/
if((Usu_codigo is null)or(Usu_codigo='')or(Usu_codigo=0))then
if((Usu_nombre1<>'')and(Usu_apellidos1<>''))then
/*insertar*/
INSERT INTO `cinemax`.`tbl_usuarios`(usu_nombre,usu_apellidos, usu_celular,usu_email,usu_telefono,usu_direccion,u su_nombre_usu,usu_contrasena)
values(Usu_nombre1,Usu_apellidos1,Usu_celular1,Usu _correo1,Usu_telefono1,Usu_direccion1,Usu_nombre_u su,Usu_contrasena);
select 'se guardo';
end if;
end if;
/*eliminar*/
if((Usu_codigo<>'')or(Usu_codigo<>null))and((Usu_n ombre1='')and(Usu_apellidos1='')and(Usu_celular1=' ')and(Usu_correo1='')and(Usu_telefono1='')and(Usu_ direccion1='')and(Usu_nombre_usu='')and(Usu_contra sena=''))then
DELETE FROM `cinemax`.`tbl_usuarios` WHERE `usu_cod`=Usu_codigo;
select 'se borro';
/*modificar*/
elseif((Usu_codigo<>'')or(Usu_codigo<>null)or(Usu_ codigo<>0))then
if((Usu_nombre1<>'')and(Usu_apellidos1<>'')and(Usu _celular1<>'')and(Usu_correo1<>'')and(Usu_telefono 1<>'')and(Usu_direccion1<>'')and(Usu_nombre_usu<>' ')and(Usu_contrasena<>''))then
UPDATE `cinemax`.`tbl_usuarios` SET usu_nombre=Usu_nombre1, usu_apellidos=Usu_apellidos1, usu_celular=Usu_celular1, usu_email=Usu_correo1, usu_telefono=Usu_telefono1, usu_direccion=Usu_direccion1, usu_nombre_usu=Usu_nombre_usu, usu_contrasena=Usu_contrasena WHERE usu_cod=Usu_codigo;
select 'se actualizo';
end if;
end if;
end$$

DELIMITER ;


este procedimiento lo que hace es que inserta modifica o elimina usuarios de una tabla.... este es mi primer procedimiento y funciona perfecto.....

pero mi problema es que trate de crear otro procedimiento para lo empleados:

CREATE DEFINER=`root`@`localhost` PROCEDURE `gestion_empleados`(
in Emp_codigo int,
in Emp_cedula int,
in Emp_nombre1 varchar(25),
in Emp_apellidos1 varchar(25),
in Emp_telefono1 varchar(25),
in Emp_direccion1 varchar (25),
in Emp_email1 varchar(25),
in Emp_celular1 varchar (25),
in Emp_descripcion1 varchar(25),
in Emp_nombre_usu1 varchar(25),
in Emp_contrasena1 varchar (25)
)
begin
if((Emp_codigo='')or(Emp_codigo=NULL)or(Emp_codigo =0))then
if((Emp_cedula<>'')and(Emp_nombre1<>'')and(Emp_ape llidos1<>'')and(Emp_telefono1<>''))then
INSERT INTO `cinemax`.`tbl_empleados` (`emp_cedula`, `emp_nombre`, `emp_apellidos`, `emp_telefono`, `emp_direccion`, `emp_email`, `emp_celular`, `emp_descripcion`, `emp_nombre_usu`, `emp_contrasena`)
VALUES (Emp_cedula,Emp_nombre1,Emp_apellidos1,Emp_telefon o1,Emp_direccion1,Emp_email1,Emp_celular1,Emp_desc ripcion1,Emp_nombre_usu1,Emp_contrasena1);
SELECT 'se guardo';
end if;
end if;
/*eliminar*/
if((Emp_codigo<>'')or(Emp_codigo<>NULL))and((Emp_c edula='')and(Emp_nombre1='')and(Emp_apellidos1='') and(Emp_telefono1='')and(Emp_direccion1='')and(Emp _email1='')and(Emp_celular1='')and(Emp_descripcion 1='')and(Emp_nombre_usu1='')and(Emp_contrasena1='' ))then
DELETE FROM `cinemax`.`tbl_empleados` WHERE `emp_codigo`=Emp_codigo;
SELECT 'se borro';
/*modificar*/
elseif((Emp_codigo<>'')or(Emp_codigo<>NULL)or(Emp_ codigo<>0))then
if((Emp_cedula<>'')and(Emp_nombre1<>'')and(Emp_ape llidos1<>'')and(Emp_telefono1<>'')and(Emp_direccio n1<>'')and(Emp_email1<>'')and(Emp_celular1<>'')and (Emp_descripcion1<>'')and(Emp_nombre_usu1<>'')and( Emp_contrasena1<>''))then
UPDATE `cinemax`.`tbl_empleados` SET `emp_cedula`=Emp_cedula, `emp_nombre`=Emp_nombre1, `emp_apellidos`=Emp_apellidos1, `emp_telefono`=Emp_telefono1, `emp_direccion`=Emp_direccion1, `emp_email`=Emp_email1, `emp_celular`=Emp_celular1, `emp_descripcion`=Emp_descripcion1, `emp_nombre_usu`=Emp_nombre_usu1, `emp_contrasena`=Emp_contrasena1 WHERE `emp_codigo`=Emp_codigo;
select'se actualizo';
end if;
end if;
end


el cual deberia de hacer la misma funcion que el otro procedimiento que es insertar modificar y eliminar los empleados de una tabla.... el error puntual es que el procedimiento de empleados inserta bien a la tabla pero cuando trato de eliminar o modificar un empleado se elimina o se modifica toda la tabla es decir
que la sentencia DELETE FROM `cinemax`.`tbl_empleados` WHERE `emp_codigo`=Emp_codigo; el where no funciona y elimina tdo....

en el caso de modificar:
UPDATE `cinemax`.`tbl_empleados` SET `emp_cedula`=Emp_cedula, `emp_nombre`=Emp_nombre1, `emp_apellidos`=Emp_apellidos1, `emp_telefono`=Emp_telefono1, `emp_direccion`=Emp_direccion1, `emp_email`=Emp_email1, `emp_celular`=Emp_celular1, `emp_descripcion`=Emp_descripcion1, `emp_nombre_usu`=Emp_nombre_usu1, `emp_contrasena`=Emp_contrasena1 WHERE `emp_codigo`=Emp_codigo;


me modifica todos los usuarios y no entiendo el por que elimina y modifica todos lo usuarios si las dos sentencial llevan consigo la clausula WHERE...


para concluir quiero decir que he revisado los campos de las tablas y son identicos, es decir si el campo es entero el procedimiento lleva una variable entera

he tratado de eliminar el procedimiento varias veces y volverlo a crear pero pasa lo mismo
es mas e migrado la base de datos para otro equipo y tampoko funciona el procedimiento, lo uniko que funciona es el insertar empleado, por que me elimina toda la tabla y me modifica toda la tabla como si no tuviera un WHERE


espero me ayuden y muchas gracias
  #2 (permalink)  
Antiguo 15/04/2015, 11:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Procedimiento almacenado

Tu problema no es de PHP, sino de MySQL.

Pide que lo meuvan al foro correcto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/04/2015, 11:23
 
Fecha de Ingreso: abril-2015
Ubicación: MEDELLIN
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Respuesta: Procedimiento almacenado

ok gracias

Etiquetas: php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:07.