Signatur
Beschreibung
ocicolumnscale ist ein veralteter Alias der Funktion oci_field_scale und gibt die Skalierung (also die Anzahl der Dezimalstellen nach dem Komma) einer numerischen Spalte aus einem Oracle-Abfrageergebnis zurück. Die Funktion ist nützlich, wenn man zur Laufzeit die Metadaten einer Ergebnismenge untersuchen möchte, zum Beispiel um dynamisch Formatierungen oder Validierungen vorzunehmen.
Die Skalierung ist insbesondere bei NUMBER- und DECIMAL-Spalten in Oracle relevant. Ein Rückgabewert von 0 bedeutet, dass keine Dezimalstellen vorhanden sind (ganzzahliger Typ), während positive Werte die Anzahl der gespeicherten Nachkommastellen angeben.
Hinweis: Da ocicolumnscale ein Alias ist, sollte in neuem Code ausschließlich oci_field_scale verwendet werden. Aliase dieser Art (ohne Unterstrich) gelten seit PHP 5 als veraltet und könnten in zukünftigen Versionen entfernt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI-Statement-Handle, das zuvor mit oci_parse und oci_execute erstellt und ausgeführt wurde. |
|
| $column Pflicht | int | Die 1-basierte Spaltenposition im Abfrageergebnis, deren Skalierung abgefragt werden soll. |
Rückgabewert
false zurückgegeben.Beispiele
Skalierung einer NUMBER-Spalte auslesen
<?php
$conn = oci_connect('benutzer', 'passwort', 'datenbank');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$sql = 'SELECT betrag, menge FROM bestellungen WHERE ROWNUM = 1';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
// Spalte 1 = betrag, Spalte 2 = menge
$scale1 = ocicolumnscale($stmt, 1);
$scale2 = ocicolumnscale($stmt, 2);
echo "Skalierung von 'betrag': " . $scale1 . PHP_EOL;
echo "Skalierung von 'menge': " . $scale2 . PHP_EOL;
oci_free_statement($stmt);
oci_close($conn);
?>
Alle Spaltenskalierungen einer Abfrage ausgeben
<?php
$conn = oci_connect('benutzer', 'passwort', 'datenbank');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$sql = 'SELECT * FROM produkte WHERE ROWNUM = 1';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
$numCols = oci_num_fields($stmt);
for ($i = 1; $i <= $numCols; $i++) {
$name = oci_field_name($stmt, $i);
$scale = ocicolumnscale($stmt, $i);
echo "Spalte: {$name}, Skalierung: {$scale}" . PHP_EOL;
}
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Veraltet: ocicolumnscale ist ein Alias für oci_field_scale und sollte in neuem Code nicht mehr verwendet werden. Nutze stattdessen oci_field_scale, um Kompatibilitätsprobleme mit zukünftigen PHP-Versionen zu vermeiden.
Die Funktion ist nur verfügbar, wenn PHP mit OCI8-Unterstützung kompiliert wurde. Für Nicht-Zahlenspalten (z. B. VARCHAR2, DATE) gibt die Funktion in der Regel 0 zurück, da diese keine Skalierung im numerischen Sinne besitzen.