PHP 8.5.0 Alpha 1 available for testing

oci_field_precision

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_precisionLee la precisión de un campo Oracle

Descripción

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

Devuelve la precisión del campo column.

Para las columnas de tipo FLOAT, la precisión no es nula, y la escala es de -127. Si la precisión es 0, entonces la columna es de tipo NUMBER. De lo contrario, es de tipo NUMBER(precision, scale).

Parámetros

statement

Un identificador de consulta OCI válido.

column

Puede ser un índice de campo (comenzando en 1) o un nombre de campo.

Valores devueltos

Devuelve la precisión, en forma de entier, o false en caso de error

Ejemplos

Ejemplo #1 Ejemplo con oci_field_precision()

<?php

// Creación de la tabla con:
// CREATE TABLE mytab (c1 NUMBER, c2 FLOAT, c3 NUMBER(4), c4 NUMBER(5,3));

$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!
$conn) {
$m = oci_error();
trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, "SELECT * FROM mytab");
oci_execute($stid, OCI_DESCRIBE_ONLY); // Uso de OCI_DESCRIBE_ONLY si ninguna fila es recuperada

$ncols = oci_num_fields($stid);
for (
$i = 1; $i <= $ncols; $i++) {
echo
oci_field_name($stid, $i) . " "
. oci_field_precision($stid, $i) . " "
. oci_field_scale($stid, $i) . "<br>\n";
}

// Muestra:
// C1 0 -127
// C2 126 -127
// C3 4 0
// C4 5 3

oci_free_statement($stid);
oci_close($conn);

?>

Ver también

add a note

User Contributed Notes 2 notes

up
0
webmaster at smwebdesigns dot com
17 years ago
I did not test well before posting previous code. This if statement works and the other does not.

if( ocicolumnscale($R, $i ) != 129 )
{
$int_decimal = ocicolumnscale($R, $i );
$int_length = ocicolumnprecision($R, $i) - $int_decimal;
}
up
0
webmaster at smwebdesigns dot com
17 years ago
I've found that when using ocicolumnprecision or oci_field_precision it will not show you the decimal places if you are are reading from tables with decimals. You can use ocicolumnscale or oci_field_scale to find the decimal.

if( ocicolumnscale($R, $i ) > 0 )
{
$int_decimal = ocicolumnscale($R, $i );
$int_length = ocicolumnprecision($R, $i) - $int_decimal;
}
To Top