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><</mo><mo>=</mo></mrow><annotation encoding="application/x-tex">i <= </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"><=</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
- oci_field_scale() - Tell the scale of the field
- oci_field_type() - Returns a field's data type name
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;
}
`