Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отменяет инструкцию. Это означает, что удаляются все ожидающие результаты для инструкции. После вызова этой функции инструкцию можно выполнить повторно, если она была подготовлена с помощью sqlsrv_prepare. Вызов этой функции не требуется, если были использованы все результаты, связанные с инструкцией.
Синтаксис
sqlsrv_cancel( resource $stmt)
Параметры
$stmt: отменяемая инструкция.
Возвращаемое значение
Логическое значение: true , если операция была выполнена успешно. В противном случае — false.
Пример
Приведенный ниже пример ориентируется на базу данных AdventureWorks для выполнения запроса, а затем использует и подсчитывает результаты, пока переменная $salesTotal не достигнет заданного значения. Оставшиеся после этого результаты запроса удаляются. В примере предполагается, что SQL Server и базы данных AdventureWorks установлены на локальном компьютере. При выполнении примера из командной строки все выходные данные выводятся в консоль.
<?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);
?>
Комментарии
Инструкцию, подготовленную и выполненную с помощью сочетания sqlsrv_prepare и sqlsrv_execute, можно выполнить повторно с помощью sqlsrv_execute после вызова sqlsrv_cancel. Инструкцию, выполненную с помощью sqlsrv_query, нельзя выполнить повторно после вызова sqlsrv_cancel.
См. также
Справочник по API для драйвера SQLSRV