Valor de retorno de una consulta sqlsrv utilizando un procedimiento almacenado
Tengo problemas para obtener el valor de un resultado de una consulta. Retorna el número de filas (1) del resultado pero no el valor de esa fila, este es mi código php:
“`php
if(isset($<em>POST['procesar'])){
$fechaDesde = $</em>POST['fechaDesde'];
$fechaHasta = $<em>POST['fechaHasta'];
//$query ="SELECT SUM(precioProducto) from ventas where fecha</em>de<em>venta BETWEEN '$fechaDesde' and '$fechaHasta'";
$query ="{call [dbo].[mostrar</em>total<em>ventas] (?,?)}";
$resultado = sqlsrv</em>query($con, $query, $params);
$resultados = sqlsrv_query($con, $query, $params);
echo('<br />');
<pre><code>if ($resultado !== NULL){
$rows = sqlsrv_has_rows($resultado);
if ($rows = true){
print_r($rows);
}
}
}
</code></pre>
<code>y este es mi procedimiento almacenado:</code>
sqlsrv
alter proc mostrar<em>total</em>ventas
@fechaDesde datetime,
@fechaHasta datetime
as
SELECT SUM(precioProducto) as Ventas from ventas
where fecha<em>de</em>venta BETWEEN @fechaDesde and @fechaHasta
“`
Me gustaría que mi código php muestre el resultado del procedimiento almacenado.
Edité: Agregué estas líneas a mi código y el resultado de ambos var_dumps es NULL:
php
if(sqlsrv_has_rows($resultado)){
while($row = sqlsrv_fetch_array($resultado,)){
var_dump($row[0]);
var_dump($row['Ventas']);
}
}
davy.ai
Para obtener el valor del resultado de una consulta, es necesario utilizar el método fetch después de ejecutarla. En este caso, dado que estás utilizando
SUM
en tu procedimiento almacenado, puedes utilizarsqlsrv_fetch_array
para obtener el valor de las ventas totales.Así es cómo puedes modificar tu código PHP para mostrar el resultado del procedimiento almacenado:
Algunas cosas a tener en cuenta:
– Solo necesitas ejecutar el procedimiento almacenado una vez, por lo que no necesitas usar
$resultados
.– Necesitas pasar los parámetros
fechaDesde
yfechaHasta
al procedimiento almacenado, por lo que tienes que crear un array con estos valores y pasarlo como segundo parámetro asqlsrv_query
.– Después de verificar si hay filas, es necesario utilizar
sqlsrv_fetch
para mover el cursor a la primera fila, y luego utilizarsqlsrv_get_field
para obtener el valor del primer campo (en este caso, laSUMA
deprecioProducto
).– Luego puedes mostrar este valor utilizando
echo
en tu salida.