Start · Sprachen · PHP · Referenz · ocicolumnscale

ocicolumnscale

Funktion

Alias von <code>oci_field_scale</code>: Gibt die Skalierung (Nachkommastellen) eines numerischen Oracle-Feldes zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

ocicolumnscale(resource $statement, int $column): int|false

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

Typ
int|false
Beschreibung
Gibt die Skalierung der Spalte als Integer zurück. Bei einem Fehler oder ungültigem Parameter wird 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);
?>
Skalierung von 'betrag': 2 Skalierung von 'menge': 0

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);
?>
Spalte: ID, Skalierung: 0 Spalte: PREIS, Skalierung: 2 Spalte: GEWICHT, Skalierung: 3

// 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.