Thanks for the pointer. I get very interesting results using Dumper. My print statement shows:
new_delete = delete from damping.search_criteria where rdb_search_criteria_id in ( 56554 , 56558 , 56559 ) But the Dumper print statement shows: $VAR1 = "delete from damping.search_criteria where rdb_search_criteria_id in ( 56554 , \00056558 , \00056559 )"; Any ideas on how this may be happening or how to get around it? I'm basically passing the following string through a cgi argument: "56554-56558-56559-" . I then convert the dashes to commas so I can place the string into the delete statement. -----Original Message----- From: Adriano Ferreira [mailto:[EMAIL PROTECTED] Sent: Monday, April 02, 2007 4:22 PM To: Nelli, Joseph R. Jr.; [email protected] Subject: Re: Looking for help with odd DBD::Oracle::db prepare behavior 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;
