Just a note regarding the size of Oracle  NUMBERS will always return 22 as their "size".
This seems to be an Oracle feature. The rest of the documentation is in bug5156.(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_field_size — 返回字段大小
statement有效的 OCI 语句标识符。
column可以是字段的索引(从1开始),也可以是名称。
   以字节为单位返回 column 的大小, 或者在失败时返回 false
  
示例 #1 oci_field_size() 示例
<?php
// Create the table with:
//   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1), 
//                       clob_col CLOB, date_col DATE);
$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
echo "<table border=\"1\">\n";
echo "<tr>";
echo "<th>Name</th>";
echo "<th>Type</th>";
echo "<th>Length</th>";
echo "</tr>\n";
$ncols = oci_num_fields($stid);
for ($i = 1; $i <= $ncols; $i++) {
    $column_name  = oci_field_name($stid, $i);
    $column_type  = oci_field_type($stid, $i);
    $column_size  = oci_field_size($stid, $i);
    echo "<tr>";
    echo "<td>$column_name</td>";
    echo "<td>$column_type</td>";
    echo "<td>$column_size</td>";
    echo "</tr>\n";
}
echo "</table>\n";
// Outputs:
//    Name           Type       Length
//    NUMBER_COL    NUMBER        22
//    VARCHAR2_COL  VARCHAR2       1
//    CLOB_COL      CLOB        4000
//    DATE_COL      DATE           7
oci_free_statement($stid);
oci_close($conn);
?>Just a note regarding the size of Oracle  NUMBERS will always return 22 as their "size".
This seems to be an Oracle feature. The rest of the documentation is in bug5156.