Start · Sprachen · PHP · Referenz · ocicolumnprecision

ocicolumnprecision

Funktion

Alias von <code>oci_field_precision()</code> — gibt die Präzision eines Feldes aus einem OCI8-Ergebnis zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

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

Beschreibung

ocicolumnprecision() ist ein veralteter Alias der Funktion oci_field_precision(). Sie gibt die Präzision (Anzahl der signifikanten Stellen) einer Spalte zurück, die aus einer Oracle-Datenbankabfrage über die OCI8-Erweiterung stammt.

Die Funktion ist nützlich, wenn man die Metadaten einer Oracle-Abfrage dynamisch auslesen möchte, beispielsweise bei der Erstellung generischer Datenbankwerkzeuge oder beim automatischen Aufbau von Formularfeldern basierend auf dem Datenbankschema. Bei NUMBER-Spalten mit definierter Präzision gibt sie die Anzahl der Gesamtstellen zurück.

Die Spalte kann entweder über ihre 1-basierte Position (Integer) oder über den Spaltennamen (String) angesprochen werden. Bei Spaltentypen wie VARCHAR2 oder anderen Nicht-Zahl-Typen ist der Rückgabewert typischerweise 0.

Achtung: Diese Funktion ist als veraltet eingestuft. In modernem Code sollte stets oci_field_precision() verwendet werden.

Parameter

Name Typ Default Beschreibung
$statement Pflicht resource Eine gültige OCI8-Statement-Ressource, die durch oci_parse() und oci_execute() erzeugt wurde.
$column Pflicht int|string Die 1-basierte Spaltenposition als Integer oder der Spaltenname als String (Groß-/Kleinschreibung spielt keine Rolle).

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Präzision der Spalte als Integer zurück. Bei Fehler oder ungültigem Statement wird false zurückgegeben. Für Nicht-Zahl-Typen ist der Rückgabewert in der Regel 0.

Beispiele

Präzision einer NUMBER-Spalte auslesen

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

if (!$conn) {
    $e = oci_error();
    trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}

$sql = 'SELECT bestellnummer, preis FROM bestellungen WHERE ROWNUM = 1';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);

// Präzision der zweiten Spalte (preis) über Position
$praezision = ocicolumnprecision($stmt, 2);
echo "Präzision von 'preis': " . $praezision . PHP_EOL;

// Präzision über Spaltenname
$praezision2 = ocicolumnprecision($stmt, 'PREIS');
echo "Präzision von 'PREIS' (per Name): " . $praezision2 . PHP_EOL;

oci_free_statement($stmt);
oci_close($conn);
Präzision von 'preis': 10 Präzision von 'PREIS' (per Name): 10

Metadaten aller Spalten eines Statements ausgeben

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');

$sql = 'SELECT * FROM produkte WHERE ROWNUM = 1';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);

$anzahlSpalten = oci_num_fields($stmt);

for ($i = 1; $i <= $anzahlSpalten; $i++) {
    $name      = oci_field_name($stmt, $i);
    $typ       = oci_field_type($stmt, $i);
    $praezision = ocicolumnprecision($stmt, $i); // Alias-Aufruf
    echo "Spalte: $name | Typ: $typ | Präzision: $praezision" . PHP_EOL;
}

oci_free_statement($stmt);
oci_close($conn);
Spalte: PRODUKT_ID | Typ: NUMBER | Präzision: 10 Spalte: NAME | Typ: VARCHAR2 | Präzision: 0 Spalte: PREIS | Typ: NUMBER | Präzision: 8

// Wichtig · Fallstricke

Veraltet: ocicolumnprecision() ist ein Alias aus frühen PHP-Versionen und sollte in neuem Code nicht mehr verwendet werden. Nutze stattdessen oci_field_precision(). Der Alias könnte in zukünftigen PHP-Versionen entfernt werden.

Die OCI8-Erweiterung muss installiert und konfiguriert sein. Ohne sie steht diese Funktion nicht zur Verfügung. Für Produktivsysteme sind außerdem sichere Verbindungsparameter (Wallet, Verschlüsselung) zu empfehlen.