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

Procedimientos almacenados en MySQL

Estas en el tema de Procedimientos almacenados en MySQL en el foro de Mysql en Foros del Web. Hola a todos: Estoy creando mi primer procedimiento almacenado en MySQL para luego llamarlo desde un consulta en PHP. El procedimiento es: CREATE PROCEDURE `get_dato`( ...
  #1 (permalink)  
Antiguo 19/03/2013, 04:54
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Procedimientos almacenados en MySQL

Hola a todos:

Estoy creando mi primer procedimiento almacenado en MySQL para luego llamarlo desde un consulta en PHP.

El procedimiento es:

CREATE PROCEDURE `get_dato`(
IN nom_usuario VARCHAR(20),
IN q_tabla VARCHAR(30),
OUT id_respuesta INTEGER(11)
)
BEGIN
set id_respuesta = select id from q_tabla where nom_usuario=nom_usuario;
END;

Me falla por todos lados, lo que pretendo es pasarle un nombre de usuario y una tabla y que me devuelva el id que coincida con ese usuario. He probado de varias maneras pero siempre me da error.

Gracias de antemano.
  #2 (permalink)  
Antiguo 19/03/2013, 06:52
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, 5 meses
Puntos: 2658
Respuesta: Procedimientos almacenados en MySQL

¿Qué falla, qué error?
Postea los mensajes de MySQL, no podemos adivinar lo que ves.
__________________
¿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 19/03/2013, 13:05
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Procedimientos almacenados en MySQL

Complementando lo que dice gnzsoloyo, algunas recomendaciones:

1. No utilices nombres de parámetros o variables idénticos a los nombres de tus campos...

Código:
nom_usuario=nom_usuario;
¿Cuál corresponde a tu nombre de campo y cual a tu nombre de parámetro?

2. prueba asignar el valor de a regresar con la palabra INTO en lugar de con SET. checa este ejemplo que viene en la documentación oficial:

Código MySQL:
Ver original
  1. mysql> delimiter //
  2.  
  3. mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
  4.     -> BEGIN
  5.     ->   SELECT COUNT(*) INTO param1 FROM t;
  6.     -> END
  7.     -> //
  8. Query OK, 0 rows affected (0.00 sec)
  9.  
  10. mysql> delimiter ;
  11.  
  12. mysql> CALL simpleproc(@a);
  13. Query OK, 0 rows affected (0.00 sec)
  14.  
  15. mysql> SELECT @a;
  16. +------+
  17. | @a   |
  18. +------+
  19. | 3    |
  20. +------+
  21. 1 row in set (0.00 sec)

3. Si tu idea es que el nombre de tu tabla también sea variable, puede que sea necesario hacer uso de sentencias preparadas:

http://dev.mysql.com/doc/refman/5.0/es/sqlps.html

Saludos
Leo.

Etiquetas: php, procedimientos, select, sql, tabla
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 08:13.