note 11981 deleted from ref.oracle by danbrown
| From: | danbrown@php.net | Date: | Fri, 28 Nov 2008 22:25:08 +0000 |
| Subject: | note 11981 deleted from ref.oracle by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-147333@lists.php.net to get a copy of this message | ||
Note Submitter: jjuffermans at chello dot com
----
The following function returns more detailed information about the columns of a table. It returns an
array of hashes, with columnname, type, size, precision, scale, nullable, comments and constraints.
function columninfo($cursor, $table) {
$query = "SELECT";
$query .= " user_tab_columns.column_name,";
$query .= " user_tab_columns.data_type,";
$query .= " user_tab_columns.data_length,";
$query .= " user_tab_columns.data_precision,";
$query .= " user_tab_columns.data_scale,";
$query .= " user_tab_columns.nullable,";
$query .= " user_col_comments.comments,";
$query .= " (SELECT";
$query .= " constraint_name";
$query .= " FROM user_cons_columns";
$query .= " WHERE column_name = user_tab_columns.column_name)";
$query .= " FROM user_tab_columns,";
$query .= " user_col_comments";
$query .= " WHERE user_tab_columns.table_name = '$table'";
$query .= " AND user_tab_columns.column_name = user_col_comments.column_name";
$query .= " ORDER BY user_tab_columns.column_id ASC NULLS FIRST";
ora_parse($cursor, $query) or die("<hr /><h2
style=\"color:#ff0000\">" . ora_error($cursor) .
"</h2><tt>$query</tt>");
ora_exec($cursor) or die("<hr /><h2 style=\"color:#ff0000\">" .
ora_error($cursor) . "</h2><tt>$query</tt>");
$ret_array = array();
while (ora_fetch($cursor)) {
$column_name = strtolower(ora_getcolumn($cursor, 0));
$data_type = ora_getcolumn($cursor, 1);
$data_length = ora_getcolumn($cursor, 2);
$data_precision = ora_getcolumn($cursor, 3);
$data_scale = ora_getcolumn($cursor, 4);
$nullable = ora_getcolumn($cursor, 5);
$nullable = ($nullable == "Y");
$comments = ora_getcolumn($cursor, 6);
$constraint_name = strtolower(ora_getcolumn($cursor, 7));
if ($data_precision) {
$data_length = $data_precision + (($data_scale) ? 1 : 0);
}
$ret_array[] = array(
"column_name" => $column_name,
"data_type" => $data_type,
"data_length" => $data_length,
"data_precision" => $data_precision,
"data_scale" => $data_scale,
"nullable" => $nullable,
"comments" => $comments,
"constraint_name" => $constraint_name
);
}
return $ret_array;
}