Foros del Web » Programando para Internet » PHP »

crear y llamar procedimiento almacenado

Estas en el tema de crear y llamar procedimiento almacenado en el foro de PHP en Foros del Web. Hola amigos. Estaba haciendo una consulta para rellenar un select de localidades, con lo que este select debe quedar con 23000 registros aproximadamente, me he ...
  #1 (permalink)  
Antiguo 15/10/2010, 12:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
crear y llamar procedimiento almacenado

Hola amigos. Estaba haciendo una consulta para rellenar un select de localidades, con lo que este select debe quedar con 23000 registros aproximadamente, me he dado cuenta de que tardaba mucho en ejecutarse.

Lo he comentado con un amigo, y me ha hablado de procedimientos almacenados, algo que desconocía.

He estado investigando, y, aunque sigo en ello, voy a recurrir a vosotros para ver si puedo resolverlo.

El procedimiento almacenado en mysql lo creo así.

CREATE PROCEDURE `c_localidades`()
BEGIN
SELECT localidad FROM t_localidades;
END;

Esto, de entrada, no se si esta bien.

Y para llamarlo, lo hago así

Código PHP:
Ver original
  1. <select name="localidad" class="formulario2" id="localidad">
  2.                                         <option value="<?php echo primera_mayuscula($rs1['localidad']);?>"><?php echo primera_mayuscula($rs1['localidad']);?></option>
  3.                     <?php
  4.                                             $sql = "CALL c_localidades();";
  5.                                             $loc1 = mysql_query($sql);
  6.                                             while ($loc2 = mysql_fetch_assoc($loc1))
  7.                                             {
  8.                                                 echo '<option>'.$loc2['localidad'].'</option>';
  9.                                             }
  10.                                         ?>
  11.                                     </select>

El caso es que de esta forma no funciona, a ver que me podeis decir al respecto.

Gracias. SAludos.
  #2 (permalink)  
Antiguo 15/10/2010, 13:17
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: crear y llamar procedimiento almacenado

Hola AitorLopez,

Echa un ojo a estos dos hilos, quizás te puede aclarar varias dudas

http://www.forosdelweb.com/f86/deber...cedure-847478/
http://www.forosdelweb.com/f68/valid...sp-php-848409/

  #3 (permalink)  
Antiguo 15/10/2010, 13:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: crear y llamar procedimiento almacenado

Hola Neodani. Gracias por tu respuesta.

He he estado echando un vistazo a los hilos y bueno, "demasiado arroz para tan poco pollo".

Tengo dos problemas. El primero es a la hora de crear el procedimiento, he abierto un hilo en el foro de mysql al respecto, y por mas vueltas que le doy, no veo donde esta el fallo.

El segundo problema es a la hora de llamarlo en php y aqui si que estoy super perdido, ya que si todo fuera normal, se llamaría con el codigo que he puesto arriba, pero como no es una consulta normal, no se que falla en este codigo.
  #4 (permalink)  
Antiguo 15/10/2010, 14:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: crear y llamar procedimiento almacenado

Bueno, ya esta resuelto el tema de crear el procedimiento en mysql. Sería de esta forma

DELIMITER $$
CREATE PROCEDURE c_localidades()
BEGIN
SELECT * FROM t_localidades;
END$$
DELIMITER ;

Ahora, el problema es que, al llamarlo de la forma que he indicado en el primer mensaje, hace unas cosas un poco raras, a veces funciona y a veces no, y cuando funciona, otras consultas que tengo de este tipo

Código PHP:
Ver original
  1. $rs2 = mysql_query(c_delegaciones_telefonos($delegacion));
  2.  
  3.                                 while ($rs3 = mysql_fetch_assoc($rs2))
  4.                                 {
  5.                                     echo $rs3['tipo_telefono'];
  6.                                     echo '<br />';
  7.                                     echo $rs3['numero'];
  8.                                     echo '<br /><br /><br />';
  9.                                 }

No me funcionan. No se es una cosa muy rara, no se si alguien me puede indicar como solucionarlo. Gracias.

Etiquetas: llamar, 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 18:53.