PHP: Hypertext Preprocessor (original) (raw)

oci_field_precision

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

oci_field_precision — Tell the precision of a field

Description

For FLOAT columns, precision is nonzero and scale is -127. If precision is 0, then column is NUMBER. Else it's NUMBER(precision, scale).

Parameters

statement

A valid OCI statement identifier.

column

Can be the field's index (1-based) or name.

Return Values

Returns the precision as an integer, or [false](reserved.constants.php#constant.false) on failure

Examples

Example #1 oci_field_precision() Example

<?php// Create the table with: // 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); // Use OCI_DESCRIBE_ONLY if not fetching rows$ncols = oci_num_fields($stid); for ($i = 1; <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mo>&lt;</mo><mo>=</mo></mrow><annotation encoding="application/x-tex">i &lt;= </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6986em;vertical-align:-0.0391em;"></span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">&lt;=</span></span></span></span>ncols; $i++) { echo oci_field_name($stid, $i) . " " . oci_field_precision($stid, $i) . " " . oci_field_scale($stid, $i) . "<br>\n"; }// Outputs: // C1 0 -127 // C2 126 -127 // C3 4 0 // C4 5 3oci_free_statement($stid); oci_close($conn);?>

See Also

Found A Problem?

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 )
{
intdecimal=ocicolumnscale(int_decimal = ocicolumnscale(intdecimal=ocicolumnscale(R, $i );
intlength=ocicolumnprecision(int_length = ocicolumnprecision(intlength=ocicolumnprecision(R, i)−i) - i)int_decimal;
}

`

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 )
{
intdecimal=ocicolumnscale(int_decimal = ocicolumnscale(intdecimal=ocicolumnscale(R, $i );
intlength=ocicolumnprecision(int_length = ocicolumnprecision(intlength=ocicolumnprecision(R, i)−i) - i)int_decimal;
}

`