Start · Sprachen · PHP · Referenz · ocicollassignelem

ocicollassignelem

Funktion

Weist einem Element einer OCI-Collection einen Wert zu (Alias von <code>OCICollection::assignElem</code>).

seit PHP 5.0.0 Kategorie: db

Signatur

ocicollassignelem(OCICollection $collection, int $index, string $value): bool

Beschreibung

ocicollassignelem ist ein prozeduraler Alias der Methode OCICollection::assignElem() aus der Oracle-Datenbankschnittstelle OCI8. Sie ermöglicht es, einem bestimmten Index innerhalb einer Oracle-Collection (z. B. VARRAY oder TABLE) einen neuen Wert zuzuweisen.

Oracle Collections sind geordnete Mengen von Elementen eines bestimmten Datenbanktyps und können mit den OCI8-Funktionen in PHP erstellt, befüllt und an gespeicherte Prozeduren übergeben werden. Mit dieser Funktion lassen sich einzelne Elemente gezielt setzen oder überschreiben.

Diese Funktion ist als veraltet (deprecated) zu betrachten; es empfiehlt sich, stattdessen die objektorientierte Methode OCICollection::assignElem() zu verwenden, da der prozedurale Stil der OCI8-Collection-Funktionen in modernem PHP-Code als überholt gilt.

Typische Einsatzgebiete sind das Befüllen von Collections, die als Parameter an Oracle-Stored-Procedures übergeben werden, etwa beim Batch-Einfügen oder bei der Übergabe mehrerer Werte als ein einzelnes Argument.

Parameter

Name Typ Default Beschreibung
$collection Pflicht OCICollection Ein gültiges OCICollection-Objekt, das zuvor mit oci_new_collection() erstellt wurde.
$index Pflicht int Der nullbasierte Index des Elements innerhalb der Collection, dem der Wert zugewiesen werden soll.
$value Pflicht string Der Wert, der dem Element an der angegebenen Position zugewiesen werden soll. Numerische Werte werden als String übergeben.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiger Index oder ungültige Collection).

Beispiele

Collection befüllen und an Stored Procedure übergeben

<?php
// Verbindung zur Oracle-Datenbank herstellen
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Neues Collection-Objekt für einen bekannten Oracle-Typ erstellen
$collection = oci_new_collection($conn, 'MY_NUM_ARRAY', 'MYSCHEMA');

// Elemente per prozeduralem Alias zuweisen
ocicollassignelem($collection, 0, '10');
ocicollassignelem($collection, 1, '20');
ocicollassignelem($collection, 2, '30');

// Collection an eine Stored Procedure binden
$stmt = oci_parse($conn, 'BEGIN myschema.verarbeite_zahlen(:arr); END;');
oci_bind_by_name($stmt, ':arr', $collection, -1, OCI_B_NTY);
oci_execute($stmt);

echo "Collection erfolgreich übergeben.";

$collection->free();
oci_free_statement($stmt);
oci_close($conn);
?>
Collection erfolgreich übergeben.

Objektorientierter Äquivalent (empfohlene Alternative)

<?php
// Empfohlene OOP-Variante statt des prozeduralen Alias
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

$collection = oci_new_collection($conn, 'MY_NUM_ARRAY', 'MYSCHEMA');

// Methode direkt auf dem Objekt aufrufen
$collection->assignElem(0, '100');
$collection->assignElem(1, '200');

echo "Element 0: " . $collection->getElem(0) . PHP_EOL;
echo "Element 1: " . $collection->getElem(1) . PHP_EOL;

$collection->free();
oci_close($conn);
?>
Element 0: 100 Element 1: 200

// Wichtig · Fallstricke

Deprecation-Hinweis: Die prozeduralen OCI8-Collection-Funktionen wie ocicollassignelem sind Aliase älterer API-Stile. In modernem PHP-Code sollte stets die objektorientierte Methode OCICollection::assignElem() verwendet werden.

Der Index ist nullbasiert. Ein ungültiger oder zu hoher Index kann dazu führen, dass die Funktion false zurückgibt, ohne eine Exception zu werfen – der Rückgabewert sollte daher geprüft werden.

Stellen Sie sicher, dass der Oracle-Collection-Typ im Schema vorhanden und korrekt angegeben ist, da andernfalls oci_new_collection() fehlschlägt und kein gültiges Objekt zurückgibt.