On 4/2/07, Nelli, Joseph R. Jr. <[EMAIL PROTECTED]> wrote:
I've been using DBD::Oracle::db from my Perl scripts for some time and have
had no problems. Today, I've started to get some odd behavior. I create a
delete string and attempt to prepare it. I get a ORA-00936 error meesage. I
don't know why. I create a  delete string with multiple items in the "where
.. in" clause:

        new_delete = delete from damping.search_criteria where
rdb_search_criteria_id in ( 56554 , 56558 )

I then call the prepare statement with the new_delete string and get the
following:

        DBD::Oracle::db prepare failed: ORA-00936:
        missing expression (DBD: error possibly near <*> indicator at char
79 in
        'delete from damping.search_criteria where rdb_search_criteria_id in
( 56554 , <*>') at
        /pw/test/svr4/PWWW/cgi-bin/eng/PSA/ITE/DDH/manager.cgi line 10887.

I then decided to try breaking up the statement into individual calls:

        new_delete = delete from damping.search_criteria where
rdb_search_criteria_id = 56554

The first statement prepared and executed fine.

        new_delete = delete from damping.search_criteria where
rdb_search_criteria_id = 56558

The second statement failed to prepare:

        DBD::Oracle::db prepare failed: ORA-00936:
        missing expression (DBD: error possibly near <*> indicator at char
68 in
        'delete from damping.search_criteria where rdb_search_criteria_id =
<*>' at
        /pw/test/svr4/PWWW/cgi-bin/eng/PSA/ITE/DDH/manager.cgi line 10887.

Can anyone explain what the problem is and how to get around it?

Just a wild guess: are you sure there's nothing strange in between
your SQL? Something like non-printing characters and the like?

Build your SQL string and take a look at it with a dumper. For instance,

use Data::Dump 'dump';
print dump $sql;

# or

use YAML 'Dump';
print Dump $sql;

# or

use Data::Dumper 'Dumper';
$Data::Dumper::Useqq = 1;
print Dumper $sql;

Reply via email to