Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2010, 13:25
Avatar de Copia
Copia
 
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
procedimiento no puede devolver un conjunto de resultados en el contexto dado

Hola nuevamente, tengo el siguiente procedimiento almacenado:
Código:
CREATE DEFINER=`root`@`localhost` PROCEDURE `PA_Venta`(xIdcliente INT, xIdempleados varchar(3),
                         xIdproducto varchar(6), xcantidad Numeric(18,2),
                         xPrecioUnit Numeric (18,2),xId_color int)
BEGIN
        declare idVenta int;  /* idventas tomara el ultimo valor auto*/
        Insert into ventas(fecha,Idcliente,Idempleados,Idproducto,cantidad,PrecioUnit,total,Id_color)
        values(current_date(),xIdcliente,xIdempleados,xIdproducto,xcantidad,xPrecioUnit,xcantidad*xPrecioUnit,xId_color);

        /* Ahora restando el stock*/

        update producto set stock = (stock - xcantidad)
        where xIdProducto = Idproducto;

        /* Mostrando el Resumen de venta */

        set idVenta = (SELECT LAST_INSERT_ID()
                      FROM ventas limit 1);  /*capturando el ultimo valor de
                      autoincrement*/

        Select v.Idventas, v.Fecha, c.nombre,e.nombre, p.Descripcion,v.Cantidad,
               v.PrecioUnit,v.total,co.Descripcion
               from ventas v,empleados e, clientes c, producto p, color co
	       where (v.Idventas = idVenta) AND  (c.Idcliente = v.Idcliente)
                     and (v.Idempleados = e.Idempleados) and (p.Idproducto = v.Idproducto)
                     and (v.Id_color = co.Id_color );

END
El cual es llamado desde php en la siguiente forma:
Código:
$resultado = mysql_query("call PA_Venta('$xIdcliente','$xIdempleados', '$xIdproducto', '$xcantidad', '$xPrecioUnit', 											 '$xId_color')") or die(mysql_error());
	  if ($row = mysql_fetch_array($resultado)){
/*	     var_dump($row, $resultado);*/
		 echo "<table border = '1'>\n";
		 echo "<tr><td>Numero de Venta</td><td>Fecha</td><td>Cliente</td><td>Empleado</td><td>Producto</td><td>Cantidad</td><td>Precio
		 Unitario</td><td>Total</td><td>Color</td></tr> \n";
		  do {
			  echo "<tr><td>".$row['Idventas']."</td><td>".$row['fecha']."</td><td>".$row[2]."</td><td>".$row[3]."</td><td>".$row[4]."
			  </td><td>".$row[5]."</td><td>".$row[6]."</td><td>".$row[7]."</td><td>".$row[8]."</td></tr>
			  \n";
			  } while ($row = mysql_fetch_array($resultado)); /* aca padeci como nunca por no darme cuenta que es mysql_fetch_array.*/
		 echo "</table>\n";
	 } else { echo "¡No se ha encontrado ningún registro!";}
y me vota el siguiente error:
PROCEDURE tienda.PA_Venta can't return a result set in the given context

Ahora, el error al parecer es en el procedimiento almacenado por ese motivo lo puse aca el post.

La verdad no se porque no me funcion, hize la mismo consulta desde php en el mismo php y funciona.