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

Procedimiento almacenado, uso de variable en limit

Estas en el tema de Procedimiento almacenado, uso de variable en limit en el foro de Mysql en Foros del Web. Hola gente!!! Estoy intentando crear un procedimiento almacenado en MySql. Este procedimiento, realiza un SELECT en cual lleva una claúsula LIMIT, al estilo "0,10". No ...
  #1 (permalink)  
Antiguo 13/08/2010, 12:27
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Procedimiento almacenado, uso de variable en limit

Hola gente!!!

Estoy intentando crear un procedimiento almacenado en MySql. Este procedimiento, realiza un SELECT en cual lleva una claúsula LIMIT, al estilo "0,10".

No obstante, necesito que en lugar del cero, utlizar una variable que recibo como parámetro del procedimiento. Quedaría algo como "pag,10", por ejemplo.

Si en lugar de "pag" utilizo un numero, lo puedo crear perfectamente, pero si intento utilizar la variable, me envia un mensaje de error que dice:


Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pag,10;
END' at line 19
Este es el codigo:

Código:
delimiter //
CREATE PROCEDURE prueba(anyo INT, mes INT, numPag INT)
BEGIN
SELECT
	idingreso AS id,
	idpagina AS idpag,
	identificador AS ident,
	ipingreso AS ip,
	sesion,
	UNIX_TIMESTAMP(fechaingreso) AS time_stamp
FROM
	adm_datosingreso
WHERE
	YEAR(fechaingreso) = anyo AND
	MONTH(fechaingreso) = mes
ORDER BY
	idpagina,
	fechaingreso
LIMIT
  pag,10;
END;
//
  #2 (permalink)  
Antiguo 13/08/2010, 12:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Procedimiento almacenado, uso de variable en limit

Sin analizar el procedimento.
No sería
numPag,10 en vez de pag,10?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/08/2010, 13:13
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, uso de variable en limit

NO. MySQL no admite el uso de variables para definir los parámetros del LIMIT.
Para poder usar un SP y parametrizar el LIMIT tienes que usar sentencias preparadas en el SP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/08/2010, 13:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Procedimiento almacenado, uso de variable en limit

Cierto gnzsoloyo.. No me había fijado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 13/08/2010, 13:45
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, uso de variable en limit


...Yo ya metí la pata tratando de hacerlo...
Finalmente lo pude sacar con lo que decía: sentencias preparadas, pero sólo usando CONCAT() de modo que los valores quedaran definidos como reales dentro de la sentencia.
__________________
¿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 25/08/2010, 23:31
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Procedimiento almacenado, uso de variable en limit

Cita:
Iniciado por gnzsoloyo Ver Mensaje
NO. MySQL no admite el uso de variables para definir los parámetros del LIMIT.
Para poder usar un SP y parametrizar el LIMIT tienes que usar sentencias preparadas en el SP.
Uhmmm... eso explica por que no funciona, jeje

Como funciona lo de concat??

Saludos, gracias
  #7 (permalink)  
Antiguo 26/08/2010, 03:04
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, uso de variable en limit

Este sería el segmento:
Código MySQL:
Ver original
  1. @sent  = CONCAT('SELECT
  2.     idingreso AS id,
  3.     idpagina AS idpag,
  4.     identificador AS ident,
  5.     ipingreso AS ip,
  6.     sesion,
  7.     UNIX_TIMESTAMP(fechaingreso) AS time_stamp
  8. FROM
  9.     adm_datosingreso
  10. WHERE
  11.     YEAR(fechaingreso) = anyo AND
  12.     MONTH(fechaingreso) = mes
  13. ORDER BY
  14.     idpagina,
  15.     fechaingreso
  16. LIMIT ', pag, ',10;');
'
__________________
¿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: limit, select, variables, procedimiento, almacenar
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:43.