On Fri, 06 Aug 2010 09:56:36 +0100, Charles Jardine <c...@cam.ac.uk>
wrote:

> On 05/08/10 12:49, H.Merijn Brand wrote:
> 
> Snip
> 
> > $dbh->do (qq;
> >     create global temporary table t_foo (
> >         h_key       blob,
> >         h_value     blob
> >         );
> >     );
> > 
> > my $sth = $dbh->prepare ("select h_value from t_foo where h_key = ?");
> > $ perl test.pl
> > DBD::Oracle::db prepare failed: ORA-00932: inconsistent datatypes: expected 
> > - got BLOB (DBD ERROR: error possibly near <*> indicator at char 32 in 
> > 'select h_value from t_foo where <*>h_key = :p1') [for Statement "select 
> > h_value from t_foo where h_key = ?"] at test.pl line 23.
> 
> This is nothing to do with perl. You get this message from Oracle if you
> attempt to compare a blob with anything, including itself.

How ultimately useless. Yet another reason to hate Oracle.
Thanks for the heads-up though.

> Here is a simple demonstration using SQLPlus.
> 
>  Connected to:
>  Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
>  SQL> create table t_foo (h_key   blob);
>  Table created.
>  SQL> select h_key from t_foo where h_key = h_key;
>  select h_key from t_foo where h_key = h_key
>                                *
>  ERROR at line 1:
>  ORA-00932: inconsistent datatypes: expected - got BLOB
> 
> It is a bad error message, but the rule is clear. This is
> from the section on Comparison Conditions in the Oracle 10.2
> SQL Reference Manual
> 
> > Large objects (LOBs) are not supported in comparison conditions.
> > However, you can use PL/SQL programs for comparisons on CLOB data.

-- 
H.Merijn Brand  http://tux.nl      Perl Monger  http://amsterdam.pm.org/
using 5.00307 through 5.12 and porting perl5.13.x on HP-UX 10.20, 11.00,
11.11, 11.23, and 11.31, OpenSuSE 10.3, 11.0, and 11.1, AIX 5.2 and 5.3.
http://mirrors.develooper.com/hpux/           http://www.test-smoke.org/
http://qa.perl.org      http://www.goldmark.org/jeff/stupid-disclaimers/

Reply via email to