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

Crear Store Procedure - MySQL

Estas en el tema de Crear Store Procedure - MySQL en el foro de Mysql en Foros del Web. Hola a todos, Espero me puedan ayudar con esto, de antemano muchísimas gracias. Tengo que hacer un Store Procedure que me actualice un campo de ...
  #1 (permalink)  
Antiguo 10/03/2010, 16:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 2 meses
Puntos: 1
Exclamación Crear Store Procedure - MySQL

Hola a todos,


Espero me puedan ayudar con esto, de antemano muchísimas gracias.

Tengo que hacer un Store Procedure que me actualice un campo de una tabla si ya son las 3am.

He estado usando MySQL Administrator, ¿Funciona bien este para hacer Store Procedures en MySQL?

No se por donde empezar, pero ya inicié buscando en páginas y haciendo el código de abajo, pero me manda un error de sintaxis.

La BD se llama prueba, la tabla que afectará es t_usuarios y el campo de esa tabla que quiero q afecte es online tipo integer(1)


Código MySQL:
Ver original
  1. CREATE PROCEDURE `prueba`.`SP_USUARIOS_ONLINE` ()
  2.   DECLARE hora_actual TIME;
  3.   DECLARE onlin INTEGER(1);
  4.  
  5.     SELECT CURRENT_TIME INTO hora_actual;
  6.  
  7.     SELECT online INTO onlin FROM t_usuarios;
  8.  
  9.     IF (onlin = 1) THEN
  10.       BEGIN
  11.         IF (hora_actual > 03:00:00) THEN
  12.            BEGIN
  13.                 UPDATE t_usuarios SET online = 0;
  14.            END
  15.         END IF;
  16.       END
  17.     END IF;

Que estoy haciendo mal??

Saludos y gracias,
Marsh_Spider
  #2 (permalink)  
Antiguo 10/03/2010, 16:58
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: Crear Store Procedure - MySQL

Algunas cosas:
1) No se pueden anidar los bloques BEGIN/END.
2) Sólo tiene sentido usarlos para operaciones atómicas. No estás escribiendo en Pascal...
3) Estás metiendo un IF anidado innecesariamene. Si necesitas las dos condiciones, ponle AND.
4) Los scripts de SP de varias líneas requieren ser escritos con modificación de delimitador de sentencia para que se carguen completos.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE `SP_USUARIOS_ONLINE` ()
  3.   DECLARE hora_actual TIME;
  4.   DECLARE onlin INTEGER(1);
  5.  
  6.   SELECT CURRENT_TIME INTO hora_actual;
  7.  
  8.   SELECT online INTO onlin FROM t_usuarios;
  9.  
  10.   IF (onlin = 1) AND (hora_actual > '03:00:00') THEN
  11.     UPDATE t_usuarios SET online = 0;
  12.   END IF;
  13. END$$
__________________
¿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 10/03/2010, 17:53
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Crear Store Procedure - MySQL

Muchas gracias por tu pronta respuesta y tus correcciones,

Está bien q lo haga en MySQL Administrator o es mejor en Command Line de MySQL??

Use el código q me pusiste y al igual que el anterior me manda error de sintaxis.




Lo estoy ejecutando desde MySQL Administrator. Incluso lo ejecuté sin el DELIMITER y me manda otro error de sintaxis:




Será porque debo hacerlo en Command Line??

Gracias por sus comentarios, todo es bienvenido.

Marsh_Spider

Última edición por Marsh_Spider; 10/03/2010 a las 17:59
  #4 (permalink)  
Antiguo 10/03/2010, 18:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Crear Store Procedure - MySQL

Perdón, ya revisé y es q le faltaba un END del BEGIN
  #5 (permalink)  
Antiguo 10/03/2010, 19:21
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: Crear Store Procedure - MySQL

No te conviene usar el MySQL Administrator. No es una herramienta de desarrollo.
En esa versión, lo que tienes que usar es el MySQL Query Browser, que es la que tiene recursos para crear SP.

Actualmente la herramienta vigente es el MySQL Workbench
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/08/2010, 09:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Crear Store Procedure - MySQL

He posteado un articulo sobre procedures y cursores en mysql en http://periospino.blogspot.com/2010/04/procedures-y-cursores-en-mysql.html espero les pueda servir.

Etiquetas: procedure, store
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 11:03.