Saltar al contenido

Cómo ejecutar un procedimiento almacenado en php usando sqlsrv y “?” parámetros de estilo

Solución:

Las contribuciones del usuario en php.net tienen un escrito sobre cómo ejecutar un procedimiento almacenado usando sqlsrv-prepare.

En caso de que se elimine de las contribuciones del usuario de php.net en el futuro, esto es lo que tenía (ha) enumerado:

$procedure_params = array(
array(&$myparams['Item_ID'], SQLSRV_PARAM_OUT),
array(&$myparams['Item_Name'], SQLSRV_PARAM_OUT)
);
// EXEC the procedure, {call stp_Create_Item (@Item_ID = ?, @Item_Name = ?)} seems to fail with various errors in my experiments
$sql = "EXEC stp_Create_Item @Item_ID = ?, @Item_Name = ?";
$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);

Aquí está la página del manual, http://php.net/manual/en/function.sqlsrv-prepare.php

Este es un seguimiento de la respuesta de @ chris85.

Vale la pena señalar aquí que una vez que se prepara la declaración, debe ejecutarla:

$sql = "EXEC stp_Create_Item @Item_ID = ?, @Item_Name = ?";
$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);
if (!sqlsrv_execute($stmt)) {
    echo "Your code is fail!";
    die;
}
while($row = sqlsrv_fetch_array($stmt)){
    //Stuff
}

sqlsrv_execute() solo devuelve verdadero / falso. Si desea analizar los datos devueltos por el procedimiento almacenado, puede procesarlos como el resultado de sqlsrv_query().

Si olvidas el sqlsrv_execute() obtendrá un error que indica que el resultado debe ejecutarse antes de que pueda usarse.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *