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.
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.
Respuesta de davidcortesb
1
1 respuesta más de otro experto
Respuesta de Jose Lindo M
La instrucción es correcta, la manera en la que lo presentas es la errónea, esto, debido a que te genera un arreglo, lo que debes poner es lo siguiente:$consulta1=mysqli_query($link,"CALL sp_prueba(0,800,@salida)");$consulta2=mysqli_query($link,"Select @salida");$resp = mysqli_fetch_array($consulta2);echo $resp[0];Ya lo probé y si funciona, espero que a tí también... saludos. - Dario Herrera Benitez