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

Concatenar cadena en store procedure

Estas en el tema de Concatenar cadena en store procedure en el foro de Mysql en Foros del Web. Hola, alguien espero pueda ayudarme, necesito hacer un store procedure en mysql para usar con php. Lo que nececito es tener un store procedure que ...
  #1 (permalink)  
Antiguo 22/02/2012, 07:55
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Concatenar cadena en store procedure

Hola, alguien espero pueda ayudarme, necesito hacer un store procedure en mysql para usar con php.
Lo que nececito es tener un store procedure que recibe por IN una cadena que seria la cadena where ya generada desde php
y dentro del store procedure tener un select ejemplo
select personas.nombre, personas.apellido from personas + parametroEntrada

parametro entrada seria por ejemplo "WHERE idPersona > 3 and apellido = gomez"

la cadena while puede variar mucho, por eso es que necesito una cadena where que se va a concatenar entera.
Bueno espero puedan ayudarme, gracias...
  #2 (permalink)  
Antiguo 22/02/2012, 09:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Concatenar cadena en store procedure

Hola cribelo:

No entendí cual es la duda... ¿Cómo concatenar cadenas? ¿Cómo hacer un procedimiento almacenado que reciba una cadena? ¿cómo poder ejecutar una consulta que vas a construir dinámica?... Ten más cuidado en la manera en que expresas tus problemas, pues si no hay claridad, es muy difícil poder ayudarte.

Te recomiendo que le des un vistazo a Sentencias Preparadas, estoy seguro que te puede servir para lo que quieres hacer.

Saludos
Leo.
  #3 (permalink)  
Antiguo 22/02/2012, 09:26
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Concatenar cadena en store procedure

Hola, si es verdad, no detalle bien, ya he echo stores proced, pero con parametros de entrada, pero ahora es diferente porque me ingresa al store algo del estilo
"WHERE idPersona=1 and idCiudad>2"
por darte un ejemplo, la cadena where es muy dinamica, que la genero con php.Intento esto

DROP PROCEDURE IF EXISTS `personas`;
CREATE PROCEDURE `personas`(IN cadenaw varchar(50))
set @a="SELECT * FROM personas ";
set @qu=CONCAT(@a,@cadenaw);
PREPARE stmt USING @qu;

ahi me da error PREPARE stmt USING @qu;
#1064 - 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 'USING @qu' at line 1
  #4 (permalink)  
Antiguo 22/02/2012, 10:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Concatenar cadena en store procedure

Hola de nuevo:

No esperes encontrar en el foro una respuesta que te tengas sólo que copiar y pegar, necesariamente tienes que investigar un poco. Aquí sólo se te darán guías, pero lo menos que podemos esperar es que leas un poco he intentes resolver los problemas por tu propia cuenta... el error es claro:

Código:
#1064 - 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 'USING @qu' at line 1
Del manual de MySQL:

Código:
La sintaxis SQL para comandos preparados se abasa en tres comandos SQL:

PREPARE stmt_name FROM preparable_stmt;

EXECUTE stmt_name [USING @var_name [, @var_name] ...];

{DEALLOCATE | DROP} PREPARE stmt_name;
Por lo tanto DONDE TIENES EL FROM????

además, tu parámetro de entrada se llama cadenaw, no @cadenaw

haz la prueba y nos comentas.

Saludos
Leo.
  #5 (permalink)  
Antiguo 23/02/2012, 11:39
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Concatenar cadena en store procedure

Sigo peliandola jaja, llegue a esto
DROP PROCEDURE IF EXISTS `pacientes`;
CREATE PROCEDURE `pacientes`()
set @inferior = 0;
set @superior = 10;
PREPARE stmt FROM 'SELECT personas.idPersona AS idP,personas.nombre,personas.fechaDeNacimiento,per sonas.apellido FROM personas LIMIT ?, ?';
EXECUTE stmt USING @inferior, @superior;
DEALLOCATE PREPARE stmt;

No me da error cuando lo ejecuto, me dice que devuelve un bolean:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in
al ejecutar esto:
$query1="CALL pacientes()";
$elementos=$this->db->consulta($query1);
$cant=5;
$this->setCantPacientes($cant);
$arrayPa=array();
$i=0;
echo "caaa".$cant;
$conexionSecciones=new ConexionSecciones($this->db);
for ($i;$i<$cant;$i++){
$row=$this->db->fetch_array($elementos);
etcc etcc.
Mi store P no deberia retornar una tabla? que hago mal? gracias

Etiquetas: concatenar, php, procedure, select, sql, store, cadenas
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:16.