Signatur
Beschreibung
ocicancel() ist ein veralteter Alias der Funktion oci_cancel() und ermöglicht es, einen laufenden Fetch-Vorgang auf einem Oracle-Statement-Ressource-Handle abzubrechen. Nach dem Aufruf wird der interne Cursor des Statements zurückgesetzt, sodass ein erneutes Ausführen oder Fetchen möglich ist.
Die Funktion gehört zur OCI8-Erweiterung für die Kommunikation mit Oracle-Datenbanken. Sie ist nützlich, wenn ein oci_execute() gestartet wurde und man anschließend nicht alle Ergebniszeilen abrufen möchte, ohne das Statement zu schließen.
Wichtig: ocicancel() ist seit PHP 5.4.0 als veraltet markiert und wurde in neueren PHP-Versionen entfernt. Es sollte ausschließlich oci_cancel() verwendet werden, um Kompatibilität mit aktuellen PHP-Versionen sicherzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI8-Statement-Handle, das zuvor mit oci_parse() erzeugt und mit oci_execute() ausgeführt wurde. |
Rückgabewert
true zurück, wenn der Cursor erfolgreich abgebrochen wurde, andernfalls false.Beispiele
Fetch-Vorgang vorzeitig abbrechen
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
$sql = 'SELECT mitarbeiter_id, name FROM mitarbeiter ORDER BY name';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
// Nur die ersten 3 Zeilen abrufen
$i = 0;
while (($row = oci_fetch_assoc($stmt)) !== false) {
echo $row['MITARBEITER_ID'] . ': ' . $row['NAME'] . PHP_EOL;
if (++$i >= 3) {
// Restliche Zeilen nicht abrufen, Cursor abbrechen
ocicancel($stmt);
break;
}
}
oci_free_statement($stmt);
oci_close($conn);
?>
Moderner Ersatz mit oci_cancel()
<?php
// Empfohlene moderne Variante – ocicancel() durch oci_cancel() ersetzen
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
$stmt = oci_parse($conn, 'SELECT produkt_id, bezeichnung FROM produkte');
oci_execute($stmt);
$row = oci_fetch_assoc($stmt);
if ($row) {
echo 'Erstes Produkt: ' . $row['BEZEICHNUNG'] . PHP_EOL;
}
// Fetch-Vorgang sauber abbrechen (moderner Stil)
oci_cancel($stmt);
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Veraltete Funktion: ocicancel() ist ein Alias der alten OCI8-API (ohne Unterstriche) und wurde mit PHP 5.4.0 als deprecated markiert. In PHP 8.x ist diese Funktion nicht mehr verfügbar. Neuer Code sollte ausschließlich oci_cancel() verwenden.
Ein Aufruf von ocicancel() in PHP 8.x führt zu einem fatalen Fehler (Call to undefined function). Bestehendes Legacy-Projekt sollte auf oci_cancel() migriert werden.