Here is a sample script I had sitting in my temp directory -- maybe it will help a bit. (Just make sure to enter "real" values for the constants ORAUSER, ORAPASS, and ORATNS.)
#!/usr/bin/perl -w
use strict;
#-- Use modules
use DBD::Oracle;
use DBI;
#-- Define local constants
use constant TRUE => 1;
use constant FALSE => 0;
use constant ORAUSER => 'my_ora_user';
use constant ORAPASS => 'secret_password';
use constant ORATNS => 'ora_db_tns_name';
#-- Define local variables
my $gDBHandle;
my $gSQLCmd;
my $gSQLHandle;
my @gFields;
#-- Initialize local variables
$gSQLCmd = 'SELECT column_name, ' .
' nullable, ' .
' data_type, ' .
' data_length ' .
' FROM dba_tab_columns ' .
' WHERE owner = ? ' .
' AND table_name = ? ' .
' ORDER BY column_id ';
#-- Connect to the database
$gDBHandle = DBI->connect
(
'dbi:Oracle:' . ORATNS, ORAUSER, ORAPASS,
{
AutoCommit => FALSE,
PrintError => FALSE,
RaiseError => FALSE,
}
) || die 'Could not connect to Oracle ['.$DBI::errstr.' - '.$DBI::er
+r.']';
#-- Get the data
$gSQLHandle = $gDBHandle->prepare($gSQLCmd)
|| die 'Error with SQL statement ['.$DBI::errstr.' - '.$DBI::err.']'
+;
$gSQLHandle->execute('SYS','DBA_TABLES')
|| die 'Error with SQL statement ['.$DBI::errstr.' - '.$DBI::err.']'
+;
while (@gFields = $gSQLHandle->fetchrow_array)
{
print $gFields[0],"\t",$gFields[1],"\t",$gFields[2],"\t",$gFields[3]
+,"\n";
}
#-- Close the database connection
$gDBHandle->disconnect();
#-- Exit
exit;
#-- End of Example