Start · Sprachen · PHP · Referenz · cubrid_current_oid

cubrid_current_oid

Funktion

Gibt die OID (Object Identifier) des Datensatzes an der aktuellen Cursorposition eines CUBRID-Abfrageergebnisses zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_current_oid(resource $req_identifier): string|false

Beschreibung

cubrid_current_oid() liest die OID des Datensatzes, auf den der interne Cursor eines CUBRID-Abfrageergebnisses aktuell zeigt. OIDs sind eindeutige, datenbankweite Bezeichner für einzelne Tupel in CUBRID und ermöglichen direkten, zeiger-basierten Zugriff auf Datensätze – unabhängig von SQL-Abfragen.

Die Funktion ist besonders nützlich, wenn du nach dem Iterieren über ein Ergebnis einen bestimmten Datensatz erneut adressieren, sperren oder per cubrid_get() / cubrid_update() direkt manipulieren möchtest. OID-basierter Zugriff ist in CUBRID oft schneller als ein erneuter SELECT-Query.

Damit die Funktion einen sinnvollen Wert liefert, muss die Abfrage im OID-Modus ausgeführt worden sein (d. h. mit dem Flag CUBRID_INCLUDE_OID beim Aufruf von cubrid_execute()), und der Cursor muss zuvor auf einen Datensatz positioniert worden sein (z. B. durch cubrid_move_cursor() oder cubrid_fetch()).

Gibt die OID als Zeichenkette im Format @NNN|NNN|NNN zurück oder false im Fehlerfall.

Parameter

Name Typ Default Beschreibung
$req_identifier Pflicht resource Das Anfrage-Handle (Request-Identifier), das von cubrid_execute() zurückgegeben wurde. Die Abfrage muss mit dem Flag CUBRID_INCLUDE_OID ausgeführt worden sein.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die OID des aktuellen Datensatzes als Zeichenkette zurück (z. B. @620|1|12). Gibt false zurück, wenn ein Fehler auftritt oder kein Datensatz an der Cursorposition vorhanden ist.

Beispiele

OID der aktuellen Cursorposition auslesen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

// Abfrage mit OID-Modus aktivieren
$req = cubrid_execute($conn, 'SELECT * FROM game', CUBRID_INCLUDE_OID | CUBRID_ASYNC);

if ($req) {
    // Cursor auf den ersten Datensatz bewegen
    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);

    // Datensatz lesen
    $row = cubrid_fetch($req);

    // OID des aktuellen Datensatzes ermitteln
    $oid = cubrid_current_oid($req);
    echo 'OID des ersten Datensatzes: ' . $oid . PHP_EOL;

    cubrid_close_request($req);
}

cubrid_disconnect($conn);
?>
OID des ersten Datensatzes: @620|1|12

OID für direkten Datensatz-Zugriff nutzen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$req = cubrid_execute($conn, 'SELECT * FROM athlete WHERE nation_code = \'GER\'', CUBRID_INCLUDE_OID | CUBRID_ASYNC);

if ($req) {
    while ($row = cubrid_fetch($req)) {
        $oid = cubrid_current_oid($req);
        echo 'Verarbeite Datensatz mit OID: ' . $oid . PHP_EOL;

        // Direktes Update über OID – kein erneuter SELECT nötig
        cubrid_put($conn, $oid, 'nation_code', 'DE');
    }

    cubrid_close_request($req);
}

cubrid_disconnect($conn);
?>
Verarbeite Datensatz mit OID: @625|1|3 Verarbeite Datensatz mit OID: @625|1|7 ...

// Wichtig · Fallstricke

OID-Modus erforderlich: Wenn cubrid_execute() ohne das Flag CUBRID_INCLUDE_OID aufgerufen wird, gibt cubrid_current_oid() keinen sinnvollen Wert zurück. Stelle sicher, dass das Flag gesetzt ist.

Cursorposition: Vor dem Aufruf muss der Cursor auf einen gültigen Datensatz positioniert worden sein – entweder durch cubrid_fetch() oder cubrid_move_cursor(). Andernfalls kann kein OID ermittelt werden.

OID-Format: CUBRID-OIDs haben das Format @Seite|Slot|Volume und sind interne Bezeichner, die sich bei strukturellen Datenbankänderungen (z. B. Tabellenreorganisation) ändern können. Speichere OIDs nicht dauerhaft in externen Systemen.