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;
}
oci_field_precision
(PHP 5, PECL OCI8 >= 1.1.0)
oci_field_precision — Indica la precisión de un campo
Descripción
$statement
, int $field
)
Devuelve la precisión del campo dado por field.
Para columnas FLOAT, la precisión no es cero y la escala es -127. Si la precisión es cero, entonces la columna es NUMBER. Otro número indica NUMBER(precisión, precisión).
Parámetros
-
statement -
Un identificador de sentencia de OCI válido.
-
field -
Puede ser un índice de campo (basado en 1) o un nombre.
Valores devueltos
Devuelve la precisión como un entero, o FALSE en caso de error.
Notas
Nota:
En versiones de PHP anteriores a la 5.0.0 se debe usar ocicolumnprecision() en su lugar. Este nombre aún se puede usar; se dejó como un alias de oci_field_precision() por razones de retrocompatibilidad. Sin embargo, este nombre es obsoleto y no se recomienda.
Ver también
- oci_field_scale() - Indica la escala de un campo
- oci_field_type() - Devuelve el tipo de datos de un campo
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;
}
