Como capturar el parámetro de salida de un sp mysql

Necesito un ejemplo de como poder rescatar en PHP el valor de un parámetro de salida de un procedimiento almacenado mysql.
Lo que estoy usando y no me resulta es lo siguiente :
$query  = "CALL sp_prueba(0,800,@salida);";
$query .= "SELECT @salida";
$result= mysqli_multi_query($link, $query);
Pero no encuentro la forma de poder leer el parametro de salida @salida
El procedimiento almacenado es asi :
DELIMITER $$
DROP PROCEDURE IF EXISTS `servicios`.`sp_prueba`$$
CREATE PROCEDURE `servicios`.`sp_prueba`(
pcod_cli  INT,
pcod_tab  INT,
OUT pret INT)
BEGIN
DECLARE reg INT;
SET autocommit=0;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
SELECT * FROM tb_prueba
WHERE cod_cli = pcod_cli AND
cod_tab = pcod_tab;
SET @reg:= FOUND_ROWS();
IF ( @reg > 0 ) THEN
SET pret=0;
ELSE
SET pret=99;
END IF;
END$$
DELIMITER ;
Por favor si puedes ayudarme te lo agradecería enormemente.

2 respuestas

Respuesta
1
Debes hacer dos llamadas.
Primero tienes que ejecutar la llamada al procedimiento y luego hacer el query al SELECT @salida
Aunque sea en dos pasos, la conexión es la misma y te devolverá el resultado correcto.
Ten en cuenta que la primera llamada no devuelve resultado ninguno puesto que es un CALL.
La segunda sí.
Gracias David
Pero sabes he realizado antes esto como tu lo indicas pero no puedo leer el parámetro de salida, ¿con qué sentencia se rescata la salida?
He probado :
$consulta1=mysqli_query($link,"CALL sp_prueba(0,800,@salida)");
$consulta2=mysqli_query($link,"Select @salida");
$resp = mysqli_fetch_array($consulta2);
print_r($resp);
Pero no me muestra nada la variable, no se de que forma leerla y asignársela a otra variable por ejemplo.
Saludos
Jimena.
Lo que ocurre es que la clase mysqli (improved) es un poco más complicada que las funciones mysql antiguas.
Después de la primera consulta debes cerrar el result set:
$consulta1->close();
Para que pueda abrir el siguiente.
Respuesta

Esto me resultó

<?php>

$query2= "

CALL CODIGO_ALUMNO (@p0);

";
$query3="

select @p0 as Codigo

";

$result2= mysql_query($query2);

$result3= mysql_query($query3);

if($registro3 = mysql_fetch_array($result3)){

$cod_alu=$registro3['Codigo'];

echo $cod_alu;
}

$query2= "

CALL CODIGO_ALUMNO (@p0);

";
$query3="

select @p0 as Codigo

";

$result2= mysql_query($query2);

$result3= mysql_query($query3);

if($registro3 = mysql_fetch_array($result3)){

$cod_alu=$registro3['Codigo'];

echo $cod_alu;
}

¿

?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas