The DBIx::Connect management of database connection is optional --- but hey I like it! :)
use DBIx::Database;
use DBIx::Connect;
use Data::Dumper;
my %mdb = DBIx::Connect->data_hash('mdb');
$db = DBIx::Database -> new ({'!DataSource' => $mdb{dsn},
'!Username' => $mdb{user},
'!Password' => $mdb{pass},
'!KeepOpen' => 1}) ;
my $field = $db -> AllNames ('customer');
#die Dumper($field);
print "fields in database order:\n @field";
print join("\n", @$field);
@$field = sort @$field;
print "\n\n";
print "fields in alphabetical order:\n ", join "\n", @$field;
Carter's compass: I know I'm on the right track when by deleting something, I'm adding functionality.
| [reply] [d/l] |
How does this method handle the case of the fields? The SQL standard does not specify whether field names are stored in lower, mixed, or upper case and each DBMS has its own choice. (This is how they're stored and returned from a query , not how they're used in SQL which must be case insensitive unless quoted). DBI makes this explicit with (and recommends the use of) $sth->{NAME_lc} and $sth->{NAME_uc} rather than the kind of generic query that Recordset seems to use. Also, presumbably Recordset has equivalents of DBI's table_info() and type_info(), etc. for other kinds of metadata?
| [reply] |
How does this method handle the case of the fields?
It depends on how you set !PreserveCase
when you called it.
# line 231 of DBIx::Database
my $fields = $sth?$sth -> FETCH ($PreserveCase?'NAME':'NAME_lc'):[]
+;
The SQL standard does not specify whether field names are stored in lower, mixed, or upper case and each DBMS has its own choice. (This is how they're stored and returned from a query , not how they're used in SQL which must be case insensitive unless quoted)
Actually
Oracle always returns field names in uppercase
DBI makes this explicit with (and recommends the use of) $sth->{NAME_lc} and $sth->{NAME_uc} rather than the kind of generic query that Recordset seems to use.
After looking at line 231, you _know_ what Recordset does. And you know that !PreserveCase allows one to force lowercase or take the field name as it is... it does not appear to support NAME_uc
Carter's compass: I know I'm on the right track when by deleting something, I'm adding functionality.
| [reply] [d/l] [select] |