sqlsrv_cancel
Cancela una instrucción. Esto significa que se descarta cualquier resultado pendiente de la instrucción. Después de llamar a esta función, se puede volver a ejecutar la instrucción si se ha preparado con sqlsrv_prepare. No resulta necesario llamar a esta función si se han consumido todos los resultados asociados con la instrucción.
Sintaxis
sqlsrv_cancel( resource $stmt)
Parámetros
$stmt: la instrucción que se va a cancelar.
Valor devuelto
Se devuelve un valor booleano True si la operación se realiza correctamente. De lo contrario, se devuelve el valor False.
Ejemplo
En el siguiente ejemplo se ejecuta una consulta en la base de datos AdventureWorks y luego se usan y cuentan los resultados hasta que la variable $salesTotal alcanza una cantidad especificada. Luego se descartan los resultados restantes de la consulta. En el ejemplo se da por hecho que SQL Server y la base de datos de AdventureWorks están instalados en el equipo local. Los resultados se agregan a la consola cuando se ejecuta el ejemplo en la línea de comandos.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Prepare and execute the query. */
$tsql = "SELECT OrderQty, UnitPrice FROM Sales.SalesOrderDetail";
$stmt = sqlsrv_prepare( $conn, $tsql);
if( $stmt === false )
{
echo "Error in statement preparation.\n";
die( print_r( sqlsrv_errors(), true));
}
if( sqlsrv_execute( $stmt ) === false)
{
echo "Error in statement execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Initialize tracking variables. */
$salesTotal = 0;
$count = 0;
/* Count and display the number of sales that produce revenue
of $100,000. */
while( ($row = sqlsrv_fetch_array( $stmt)) && $salesTotal <=100000)
{
$qty = $row[0];
$price = $row[1];
$salesTotal += ( $price * $qty);
$count++;
}
echo "$count sales accounted for the first $$salesTotal in revenue.\n";
/* Cancel the pending results. The statement can be reused. */
sqlsrv_cancel( $stmt);
?>
Comentarios
Una instrucción preparada y ejecutada mediante la combinación de sqlsrv_prepare y sqlsrv_execute se puede volver a ejecutar con sqlsrv_execute después de llamar a sqlsrv_cancel. Una instrucción ejecutada con sqlsrv_query no se puede volver a ejecutar después de llamar a sqlsrv_cancel.
Consulte también
Referencia de API del controlador SQLSRV