Partager via


sqlsrv_cancel

Annule une instruction. Cela signifie que les résultats en attente pour l'instruction sont ignorés. Après l'appel de cette fonction, l'instruction peut être réexécutée si elle a été préparée avec sqlsrv_prepare. L'appel de cette fonction n'est pas nécessaire si tous les résultats associés à l'instruction ont été traités.

Syntaxe

sqlsrv_cancel( resource $stmt)

Paramètres

$stmt : instruction à annuler.

Valeur de retour

Valeur booléenne : true si l'opération a réussi. Sinon, false.

Exemple

L'exemple suivant cible la base de données AdventureWorks pour exécuter une requête, puis traite et analyse les résultats jusqu'à ce que la variable $salesTotal atteigne une valeur spécifique. Les résultats restants de la requête sont ensuite ignorés. L'exemple suppose que SQL Server et la base de données AdventureWorks sont installés sur l'ordinateur local. Toutes les données de sortie sont écrites dans la console lorsque l'exemple est exécuté à partir de la ligne de commande.

<?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);
?>

Commentaires

Une instruction préparée et exécutée à l'aide de la combinaison sqlsrv_prepare et sqlsrv_execute peut être réexécutée avec sqlsrv_execute après l'appel de sqlsrv_cancel. Une instruction exécutée avec sqlsrv_query ne peut pas être réexécutée après l'appel de sqlsrv_cancel.

Voir aussi

Référence

sqlsrv_free_stmt

Concepts

À propos des exemples de code dans la documentation

Autres ressources

Référence de l'API (Pilote SQL Server pour PHP)
Connexion au serveur
Récupération des données