Signatur
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
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);
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);
// 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.