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

Procedimiento Almanceda en MySql

Estas en el tema de Procedimiento Almanceda en MySql en el foro de Mysql en Foros del Web. Saludos. Soy nuevo en la programación, tengo un problema en cuanto a crear un procedimiento almacenado en MySql. No entiendo muy bien la sintaxis, aqui ...
  #1 (permalink)  
Antiguo 13/06/2012, 18:47
 
Fecha de Ingreso: junio-2012
Mensajes: 19
Antigüedad: 11 años, 10 meses
Puntos: 1
Exclamación Procedimiento Almanceda en MySql

Saludos.

Soy nuevo en la programación, tengo un problema en cuanto a crear un procedimiento almacenado en MySql.
No entiendo muy bien la sintaxis, aqui esta lo que voy avanzando, lo estoy trabajando en navicat:

Código sql:
Ver original
  1. BEGIN
  2.         SELECT
  3.             usuarios.usu_nombres,
  4.             usuarios.usu_apellidos,
  5.             usuarios.usu_direccion,
  6.             usuarios.usu_telefono,
  7.             usuarios.usu_id,
  8.             usuarios.usu_usuario,
  9.             usuarios.usu_clave,
  10.             usuarios.usu_eliminado,
  11.             usuarios.rol_id,
  12.             roles.rol_id,
  13.             roles.rol_descripcion
  14.         FROM usuarios
  15.         INNER JOIN roles ON usuarios.rol_id = roles.rol_id
  16.         WHERE usuarios.usu_eliminado = '0'
  17.         AND CONCAT(usuarios.usu_usuario,' ',usuarios.usu_nombres,' ',usuarios.usu_apellidos) LIKE CONCAT('%',p_usuario,'%')
  18.         ORDER BY CONCAT(p_campo_orden,p_tipo_orden)
  19.         LIMIT p_offset, p_limit;
  20. END

El problema es en el ORDER BY, no toma los parametros que le estou enviando.
Espero puedan ayudarme.
Gracias de antemano.
  #2 (permalink)  
Antiguo 13/06/2012, 21: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 Almanceda en MySql

Primero, no puedes pasar nombres de columnas como parámetro, al menos no así. Para eso deberías usar sentencias preparadas, y no lo estas haciendo.
Segundo, tampoco puedes usar variable (o parametros) en el LIMIT. Sólo acepta numeros reales.
Busca en el manual de referencia online el tema "sentencias preparadas".

Se pueden usar en SP, y te servirán para lo que quieres hacer.
__________________
¿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 14/06/2012, 15:44
 
Fecha de Ingreso: junio-2012
Mensajes: 19
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Procedimiento Almanceda en MySql

gracias mi estimado gnzsoloyo.
Tenias razon y en agradecimiento te dejo el código por se acaso lo necesites.

Código sql:
Ver original
  1. BEGIN
  2.         DECLARE sentencia VARCHAR(1500);
  3.         SET @sentencia = CONCAT('SELECT
  4.             usuarios.usu_nombres,
  5.             usuarios.usu_apellidos,
  6.             usuarios.usu_direccion,
  7.             usuarios.usu_telefono,
  8.             usuarios.usu_id,
  9.             usuarios.usu_usuario,
  10.             usuarios.usu_clave,
  11.             usuarios.usu_eliminado,
  12.             usuarios.rol_id,
  13.             roles.rol_id,
  14.             roles.rol_descripcion
  15.         FROM usuarios
  16.         INNER JOIN roles ON usuarios.rol_id = roles.rol_id
  17.         WHERE usuarios.usu_eliminado = 0
  18.         AND CONCAT(usuarios.usu_nombres," ",usuarios.usu_apellidos," ",usuarios.usu_usuario) LIKE CONCAT("%',p_usuario,'%")
  19.         ORDER BY ',p_campo_orden,' ',p_tipo_orden,'
  20.         LIMIT ',p_offset,',',p_limit);
  21.         PREPARE consulta FROM @sentencia;
  22.         EXECUTE consulta;
  23.         DEALLOCATE PREPARE consulta;
  24.         SET @sentencia = NULL;
  25. END
  #4 (permalink)  
Antiguo 14/06/2012, 20:02
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 Almanceda en MySql

Excelente.
Una sugerencia: Como está bastante claramente planteado, yo te diría que elimines esa línea y lo pongas como FAQ de MySQL...
¿Qué opinas?

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql
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 00:22.