Signatur
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
@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 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);
?>
// 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.