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

Parametros en mysql

Estas en el tema de Parametros en mysql en el foro de Mysql en Foros del Web. estoy replicando un busqueda de SQL a mysql, con dos parametros, el primero el el @TEXTO a buscar y el segundo (@BUSCARPOR) es el campo ...
  #1 (permalink)  
Antiguo 21/06/2011, 07:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
Exclamación Parametros en mysql

estoy replicando un busqueda de SQL a mysql, con dos parametros, el primero el el @TEXTO a buscar y el segundo (@BUSCARPOR) es el campo de la tabla donde buscar

este es el script en slq server y funciona bien
--------
DECLARE @TEXTO varchar(24), @BUSCARPOR int
SELECT @TEXTO = :TEXTO, @BUSCARPOR = :BUSCARPOR

select *
from estudios

where (convert(varchar, codigo_estudios) LIKE @TEXTO +'%' AND @BUSCARPOR = 0) OR (nombre_estudios LIKE @TEXTO +'%' AND @BUSCARPOR = 1)

-----------------------
lo que he echo en para mysql es : (el declare no lo puedo insertar a menos que sea procedimiento almacenado.. y solo es un consulta)
-----
SET @TEXTO = ?, @BUSCARPOR = ?;

SELECT *
FROM estudios

WHERE (CAST( codigo_estudios AS CHAR ) LIKE @TEXTO AND @BUSCARPOR =0) OR (descri_estudios LIKE @TEXTO AND @BUSCARPOR =1 )

---

Y no me funciona me reclama un sintasis incorrectea en la primera linea cerca del select. (me dice, syntaxis error near @BUSCAPOR = _latin'0';

si alguien me pudiera ayudar lo agradeceria
  #2 (permalink)  
Antiguo 21/06/2011, 07:30
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: Parametros en mysql

En tu script no estás poniendo los cierres de sentencia.
MySQL exige que toda sentencia termine cierre con un terminador, que por default es el punto y coma (;). Además, no puedes usar parámetros de esa forma sin usar un SP.
Esto, que yo sepa, no lo puedes usar en un script, porque el script no puede invocarse pasándole parámetros.
Código MySQL:
Ver original
  1. SET @TEXTO = ?, @BUSCARPOR = ?;
Tendrías que ejecutar esa misma sentencia pero poniendole los valores en lugar de "?". y luego usar el resto del script:
Código MySQL:
Ver original
  1. FROM estudios;
  2. WHERE (CAST( codigo_estudios AS CHAR ) LIKE @TEXTO
  3. AND @BUSCARPOR =0) OR (descri_estudios LIKE @TEXTO AND @BUSCARPOR =1 );
Pero la salida de este no he visto que pueda ser tomada desde fuera del MySQL, a menos que pongas todo en un SP. Normalmente un sript funciona en forma encapsulada y hace las tareas sin devolución de datos, como no sea por consola.

Ten en cuenta que migrar estas cosas no es sencillo entre DBMSs.

¿Por qué no lo haces con un 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)
  #3 (permalink)  
Antiguo 21/06/2011, 08:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Parametros en mysql

en el motor de mysql lo tengo textual asi .. y me funciona ok

Código SQL:
Ver original
  1. SET @TEXTO = '%des';
  2. SET @BUSCARPOR = 1;
  3.  
  4. SELECT *
  5. FROM estudi
  6.  
  7. WHERE (CAST( codigo_estudi AS CHAR ) LIKE @TEXTO AND @BUSCARPOR=0) OR
  8.        (descri_estudi LIKE @TEXTO AND @BUSCARPOR=1 )AND
  9.  
  10. estado_estudi =1;

el problema lo tengo al pasarle el parametro de @texto la columa a buscar...(BUSCAPOR)

como podria hacer un procedimiento almacenado con este codigo..??

alguien me puede dar algun ejemplo .. ?


..
  #4 (permalink)  
Antiguo 21/06/2011, 08:55
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: Parametros en mysql

¿No has probado leyendo el manual de referencia (Capítulo 19. Procedimientos almacenados y funciones).
Es la mejor forma. Yo lo hago siempre cuando cambio de DBMS.

Ejemplo probable:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE INF EXISTS buscar_por$$
  3. CREATE PROCEDURE buscar_por(IN TEXTO VARCHAR(100), IN BUSCARPOR INT)
  4.     SELECT *
  5.     FROM estudi
  6.     WHERE
  7.         (CAST( codigo_estudi AS CHAR ) LIKE TEXTO AND BUSCARPOR=0) OR
  8.         (descri_estudi LIKE TEXTO AND BUSCARPOR = 1) AND
  9.         estado_estudi =1;
  10. END$$
  11. 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)
  #5 (permalink)  
Antiguo 22/06/2011, 09:12
 
Fecha de Ingreso: marzo-2011
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Parametros en mysql

quedo perfecto .. gracias ..

como cierro el tema?
  #6 (permalink)  
Antiguo 22/06/2011, 10:14
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: Parametros en mysql

En realidad sólo los moderadores pueden cerrarlo... No te preocupes. Siempre alguien va a hacer algún comentario más, y a veces resultan interesantes.
__________________
¿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: parametros, sintasis
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:52.