Start · Sprachen · PHP · Referenz · ocicancel

ocicancel

Funktion

Veralteter Alias für <code>oci_cancel()</code> – bricht einen laufenden OCI-Cursor/Fetch-Vorgang ab.

seit PHP 4.0.0 Kategorie: db

Signatur

ocicancel(resource $statement): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
1: Anna Bauer 2: Bernd Müller 3: Clara Schmidt

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);
?>
Erstes Produkt: Tischlampe

// 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.