Start · Sprachen · PHP · Referenz · ocicolumntyperaw

ocicolumntyperaw

Funktion

Alias von <code>oci_field_type_raw</code> – gibt den rohen Oracle-Datentypcode eines Feldes als Integer zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ocicolumntyperaw(resource $statement, int|string $column): int|false

Beschreibung

ocicolumntyperaw ist ein veralteter Alias der Funktion oci_field_type_raw. Er gibt den internen numerischen Oracle-Datentypcode (OCI-Typkonstante) für eine Spalte eines ausgeführten OCI8-Statements zurück. Dieser Rohwert entspricht dem Oracle-internen Typ-Identifier, der sich von den lesbaren PHP-Typnamen unterscheidet, die oci_field_type liefert.

Typische Anwendungsfälle sind Low-Level-Introspektion von Oracle-Ergebnismengen, etwa wenn man das genaue Verhalten der Typumwandlung nachvollziehen oder bestimmte Oracle-Typen (z. B. INTERVAL, ROWID, CLOB) anhand ihrer numerischen Codes unterscheiden möchte.

Die Spalte kann entweder über ihren 1-basierten numerischen Index oder über ihren Namen (Groß-/Kleinschreibung unerheblich) angegeben werden. Das Statement muss zuvor mit oci_execute ausgeführt worden sein.

Hinweis: Diese Funktion ist ein Alias und sollte in modernem Code durch oci_field_type_raw ersetzt werden, da Aliase in zukünftigen PHP-Versionen entfernt werden können.

Parameter

Name Typ Default Beschreibung
$statement Pflicht resource Ein gültiges, bereits ausgeführtes OCI8-Statement-Handle, wie es von oci_parse und oci_execute erzeugt wird.
$column Pflicht int|string Spaltenindex (1-basiert) oder Spaltenname (Groß-/Kleinschreibung wird ignoriert) der gewünschten Spalte im Ergebnis.

Rückgabewert

Typ
int|false
Beschreibung
Gibt den Oracle-internen Datentypcode als Integer zurück. Bei einem Fehler (ungültiger Index, nicht ausgeführtes Statement) wird false zurückgegeben.

Beispiele

Rohen Oracle-Datentypcode einer Spalte ermitteln

<?php
$conn = oci_connect('user', 'password', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT employee_id, hire_date, salary FROM employees WHERE ROWNUM = 1');
oci_execute($stid);

$numCols = oci_num_fields($stid);
for ($i = 1; $i <= $numCols; $i++) {
    $name    = oci_field_name($stid, $i);
    $rawType = ocicolumntyperaw($stid, $i);
    echo "Spalte: $name => Oracle-Rohtyp-Code: $rawType\n";
}

oci_free_statement($stid);
oci_close($conn);
Spalte: EMPLOYEE_ID => Oracle-Rohtyp-Code: 2 Spalte: HIRE_DATE => Oracle-Rohtyp-Code: 12 Spalte: SALARY => Oracle-Rohtyp-Code: 2

Spalte über Namen ansprechen

<?php
$conn = oci_connect('user', 'password', 'localhost/XE');
$stid = oci_parse($conn, 'SELECT job_title FROM jobs WHERE ROWNUM = 1');
oci_execute($stid);

// Spalte über Namen (case-insensitiv)
$rawType = ocicolumntyperaw($stid, 'JOB_TITLE');
echo "Rohtyp-Code fuer JOB_TITLE: $rawType\n";
// VARCHAR2 in Oracle hat den Code 1

oci_free_statement($stid);
oci_close($conn);
Rohtyp-Code fuer JOB_TITLE: 1

// Wichtig · Fallstricke

Deprecated-Hinweis: ocicolumntyperaw ist ein Prozedural-Alias für oci_field_type_raw. Alle OCI8-Aliasnamen ohne Unterstrich (z. B. ocifetch, ociparse) gelten als veraltet. Für neuen Code sollte ausschließlich oci_field_type_raw verwendet werden.

Die zurückgegebenen numerischen Codes sind Oracle-interne Typ-IDs (z. B. 1 = VARCHAR2, 2 = NUMBER, 12 = DATE, 23 = RAW, 96 = CHAR). Diese Werte sind in der Oracle-OCI-Dokumentation definiert und können sich zwischen Oracle-Versionen unterscheiden.

Diese Funktion setzt eine korrekt installierte OCI8-Erweiterung sowie eine aktive Oracle-Datenbankverbindung voraus.