Start · Sprachen · PHP · Referenz · ociloadlob

ociloadlob

Funktion

Alias von <code>OCILob::load()</code> – lädt den gesamten Inhalt eines LOB-Objekts aus einer Oracle-Datenbank und gibt ihn als String zurück.

seit PHP 4.0.6 Kategorie: db

Signatur

ociloadlob(OCILob $lob): string|false

Beschreibung

ociloadlob() ist ein prozeduraler Alias der Methode OCILob::load() und ermöglicht das vollständige Laden des Inhalts eines Oracle Large Object (LOB) – also eines BLOB (Binary Large Object) oder CLOB (Character Large Object) – aus einer Oracle-Datenbank in eine PHP-Variable.

Die Funktion wird typischerweise verwendet, nachdem eine SQL-Abfrage mit oci_execute() ausgeführt wurde und ein LOB-Deskriptor über oci_fetch_array() oder eine ähnliche Funktion abgerufen wurde. Anstatt das LOB stückweise zu lesen, wird mit ociloadlob() der gesamte Inhalt auf einmal in den Speicher geladen.

Bei sehr großen LOBs kann es sinnvoller sein, den Inhalt mit OCILob::read() stückweise zu verarbeiten, um den Speicherbedarf zu reduzieren. Für kleinere bis mittelgroße Dateninhalte ist ociloadlob() jedoch bequem und ausreichend.

Hinweis: Diese Funktion ist ein Alias und gilt als veraltet. In modernem Code sollte stattdessen direkt die Methode OCILob::load() auf dem LOB-Objekt aufgerufen werden.

Parameter

Name Typ Default Beschreibung
$lob Pflicht OCILob Ein gültiger LOB-Deskriptor, wie er z. B. von oci_fetch_array() mit dem Flag OCI_RETURN_LOBS oder als Objekt zurückgegeben wird.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den vollständigen Inhalt des LOB als String zurück. Im Fehlerfall (z. B. ungültiger Deskriptor) wird false zurückgegeben.

Beispiele

CLOB-Inhalt aus Oracle-Datenbank lesen

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

$stmt = oci_parse($conn, 'SELECT beschreibung FROM produkte WHERE id = :id');
oci_bind_by_name($stmt, ':id', $id);
$id = 42;
oci_execute($stmt);

$row = oci_fetch_array($stmt, OCI_ASSOC);
if ($row && $row['BESCHREIBUNG'] instanceof OCILob) {
    $inhalt = ociloadlob($row['BESCHREIBUNG']);
    echo $inhalt;
    $row['BESCHREIBUNG']->free();
}

oci_free_statement($stmt);
oci_close($conn);
?>
(Inhalt des CLOB-Feldes "beschreibung" für Produkt mit ID 42)

Modernere Alternative mit OCILob::load()

<?php
// Empfohlener moderner Weg (kein Alias, direkt die Methode aufrufen)
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
$stmt = oci_parse($conn, 'SELECT dateiinhalt FROM dateien WHERE datei_id = :fid');
oci_bind_by_name($stmt, ':fid', $fid);
$fid = 7;
oci_execute($stmt);

$row = oci_fetch_array($stmt, OCI_ASSOC);
if ($row && $row['DATEIINHALT'] instanceof OCILob) {
    // Direkter Methodenaufruf statt ociloadlob()
    $inhalt = $row['DATEIINHALT']->load();
    file_put_contents('/tmp/ausgabe.bin', $inhalt);
    $row['DATEIINHALT']->free();
    echo "Datei gespeichert, Größe: " . strlen($inhalt) . " Bytes";
}

oci_free_statement($stmt);
oci_close($conn);
?>
Datei gespeichert, Größe: 204800 Bytes

// Wichtig · Fallstricke

Veralteter Alias: ociloadlob() ist ein Alias für OCILob::load(). Die Verwendung von Aliasfunktionen wird in PHP nicht empfohlen, da sie in zukünftigen Versionen entfernt werden könnten. Neuer Code sollte immer die Methode direkt auf dem LOB-Objekt aufrufen.

Speicherverbrauch: Das vollständige Laden großer LOBs (z. B. mehrere Megabyte oder Gigabyte) kann den PHP-Speicher erheblich belasten. Für sehr große LOBs empfiehlt sich das schrittweise Lesen mit OCILob::read().

Ressourcenverwaltung: Nach dem Laden des LOB-Inhalts sollte der Deskriptor mit OCILob::free() freigegeben werden, um Ressourcen zu schonen.