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;
