desc: invalid sql statement, answered
am 27.12.2005 20:39:34 von Richie--------------030901060104040400000507
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
found a google hit finally which answers my question:
From: Bob Showalter [mailto:Bob_Showalter@xxxxxxxxxxxxxxx] Sent:
Tuesday, May 31, 2005 2:55 PM To: Christopher L. Hood;
beginners@xxxxxxxx Subject: RE: :Oracle problems
christopher.l.hood@xxxxxxxxxxx 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.
--------------030901060104040400000507
Content-Type: message/rfc822;
name="desc: invalid sql statement"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="desc: invalid sql statement"
Message-ID: <43B19782.1050601@triad.rr.com>
Date: Tue, 27 Dec 2005 14:35:30 -0500
From: listmail
User-Agent: Mozilla Thunderbird 1.0.5 (Windows/20050711)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: dbi-users@perl.org
Subject: desc: invalid sql statement
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
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().
--------------030901060104040400000507--