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.