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 ---

Reply via email to