Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/11/2015, 05:41
Avatar de gnzsoloyo
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: Mysql Variable dentro del WHERE

Cita:
Iniciado por luaugii Ver Mensaje
Estimado gnzsoloyo


Muchas gracias por responder a mi pregunta


Leí el manual como me sugeristes, sigo teniendo un problema parece ser con las variables vinculadas, comparto el código:
Código MySQL:
Ver original
  1. CREATE PROCEDURE  buscar
  2. (IN `_ruc` VARCHAR(13), IN `_desde` INT(4), IN `_limite` INT(4), IN `_aprobado`)
  3.  
  4.     PREPARE ofertas FROM 'SELECT `ruc`, `tituloOferta` FROM `ofertas` LIMIT ?,?';
  5.     EXECUTE ofertas USING _desde, _limite;
  6.     DEALLOCATE PREPARE ofertas;


Cuando intento ejecutar el código se muestra este error:

Error code 1064, SQL state 42000: 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 '_desde, _limite;
DEALLOCATE PREPARE ofertas;

Y no se crea el procedimiento almacenado


Dios les bendiga, esperando por su ayuda..!

Vuelvo a decirte lo que te dije al principio: Tienes que leer el manual de referncia cuando pasas de un DBMS a otro. No tienen las mismas reglas en muchos casos.

http://dev.mysql.com/doc/refman/5.7/...-routines.html

En esta ocasion el problema es que la forma de escribir y crear stored procedures no es igual en todos ellos, y en el caso de MySQL tiene algunas exigencias.
1) Todo SP/SF de más de una linea debe usar bloques BEGIN/END.
2) Dependiendo del modo de insertar al codigo, es posible que requiera el uso de DELIMITER para comenzar y cerrar todo el bloque. Eso ocurre principalmente si usas la consola de MySQL para escribirlo, ya que en phpMyadmin lo maneja internamente, y en el MySQL Workbench también.

En cualquier caso, si fuese por consola de MySQL sería:


Código MySQL:
Ver original
  1. DELIMTER $$
  2. CREATE PROCEDURE  buscar
  3. (IN `_ruc` VARCHAR(13), IN `_desde` INT(4), IN `_limite` INT(4), IN `_aprobado`)
  4.     PREPARE ofertas FROM 'SELECT `ruc`, `tituloOferta` FROM `ofertas` LIMIT ?,?';
  5.     EXECUTE ofertas USING _desde, _limite;
  6.     DEALLOCATE PREPARE ofertas;
  7. END $$
  8. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)