found a google hit finally which answers my question:
From: Bob Showalter [mailto:[EMAIL PROTECTED] Sent:
Tuesday, May 31, 2005 2:55 PM To: Christopher L. Hood;
[EMAIL PROTECTED] Subject: RE: :Oracle problems
[EMAIL PROTECTED] wrote: > All, > > I am getting the
following error while trying to use DBD::Oracle: > > DBD::Oracle::st
execute failed: ORA-00900: invalid SQL statement (DBD > ERROR:
OCIStmtExecute) [for Statement "describe ALL_USERS"] at >
./oracleTest.pl line 69.
DESCRIBE is a SQL*Plus command. It is not part of the Oracle SQL
language. You need to either query the data dictionary views directly,
or use the statement handle attributes like NAME, PRECISION, TYPE, etc.
to get this information.
--- Begin Message ---
I believe a describe statement is Oracle DDL, but I still failed for
both of the ways that I know of to execute sql. There must be something
that I am not considering.
#!/usr/local/bin/perl
#script to demonstate execution failure
use strict;
use warnings;
use DBI;
use DBD::Oracle;
my $username='';
my $password='';
my $dbsid='';
my $cont;
eval {
$cont = DBI->connect('dbi:Oracle:' . lc($dbsid), $username,
$password,
{
RaiseError => 1,
AutoCommit => 0,
ora_session_mode => 0
}
);
};
die "problem" if ($@);
my $sth;
#1
eval {
$sth = $cont->prepare("desc user_tables");
};
if ($@) {
print "$DBI::errstr";
#exit;
} else {
eval {
$sth->execute;
};
if ($@) {
print "$DBI::errstr";
#exit;
}
}
#2
eval {
$cont->do("desc user_tables");
};
if ($@) {
print "$DBI::errstr";
#exit;
}
# Windows XP
# DBI 1.48
# DBD-Oracle 1.16
# ActivePerl 5.8.7 build 813
DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "desc user_tables"] at
C:\DATA\SESS_KILL\DBD-DBI_testing.pl line 37.
ORA-00900: invalid SQL statement (DBD ERROR: OCIStmtExecute) <--print output
DBD::Oracle::db do failed: ORA-00900: invalid SQL statement (DBD ERROR:
OCIStmtExecute) [for Statement "desc user_tables"] at
C:\DATA\SESS_KILL\DBD-DBI_testing.pl line 48.
ORA-00900: invalid SQL statement (DBD ERROR: OCIStmtExecute) <--print output
Issuing rollback() for database handle being DESTROY'd without explicit
disconnect().
--- End Message ---