Signatur
Beschreibung
oci_field_size() ermittelt die maximale Größe eines Datenbankfelds in Bytes, das zu einem ausgeführten OCI8-Statement gehört. Die Funktion ist nützlich, um vor dem Abrufen von Daten zu wissen, wie viel Speicherplatz für einen Feldwert maximal benötigt wird – etwa beim Puffern von LOB-Daten oder bei der Validierung von Eingaben.
Der Parameter column kann entweder der 1-basierte Index der Spalte im Ergebnisset oder der Name der Spalte als Zeichenkette sein. Spaltennamen werden in der Regel großgeschrieben, da Oracle intern mit Großbuchstaben arbeitet.
Die Funktion gibt die Größe in Bytes zurück, wie sie durch den Oracle-Datentyp definiert ist. Für Typen wie NUMBER, DATE oder CLOB entspricht dies der definierten Maximallänge des Datentyps. Bei VARCHAR2(100) wäre das Ergebnis beispielsweise 100.
Diese Funktion setzt voraus, dass das Statement mit oci_execute() ausgeführt wurde, bevor sie aufgerufen wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI8-Statement-Handle, das zuvor mit oci_parse() erzeugt und mit oci_execute() ausgeführt wurde. |
|
| $column Pflicht | int|string | Entweder der 1-basierte numerische Index der Spalte im Ergebnisset oder der Name der Spalte als Zeichenkette (üblicherweise in Großbuchstaben, z. B. 'EMPNO'). |
Rückgabewert
false zurückgegeben.Beispiele
Feldgröße über Spaltenindex abrufen
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT employee_id, first_name, last_name FROM employees');
oci_execute($stid);
$ncols = oci_num_fields($stid);
for ($i = 1; $i <= $ncols; $i++) {
$name = oci_field_name($stid, $i);
$size = oci_field_size($stid, $i);
echo "Spalte $i: $name – maximale Größe: $size Bytes\n";
}
oci_free_statement($stid);
oci_close($conn);
?>
Feldgröße über Spaltenname abrufen
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT first_name, email FROM employees WHERE ROWNUM = 1');
oci_execute($stid);
// Spaltenname in Großbuchstaben angeben
$size = oci_field_size($stid, 'EMAIL');
echo "Maximale Größe von EMAIL: $size Bytes\n";
oci_free_statement($stid);
oci_close($conn);
?>
// Wichtig · Fallstricke
Hinweis zur Groß-/Kleinschreibung: Oracle speichert Spaltennamen intern in Großbuchstaben. Wenn der Spaltenname als Zeichenkette übergeben wird, muss er in Großbuchstaben angegeben werden (z. B. 'FIRST_NAME'), sonst gibt die Funktion false zurück.
Verfügbarkeit: Diese Funktion setzt die OCI8-Erweiterung voraus (ext/oci8), die separat konfiguriert und mit Oracle-Clientbibliotheken verknüpft werden muss. Sie steht nicht auf allen PHP-Installationen zur Verfügung.
LOB-Typen: Bei CLOB- oder BLOB-Feldern spiegelt die zurückgegebene Größe nicht die tatsächliche Datengröße wider, sondern die intern definierte Maximalgröße des Datentyps.