Question: what happens when you print out the SQL command? Does it look like what you'd expect?
Try breaking it up into this first:
my $sql = " select * from ( select * from qatest where ser_app_name like upper('%$mainsearch%') or att_data like upper('%$mainsearch%') or mrserver like upper('%$mainsearch%') or owner_user like upper('%$mainsearch%') or lan_serv like upper('%$mainsearch%') or s_contact like upper('%$mainsearch%') or s_provider like upper('%$mainsearch%') or prod_deliv like upper('%$mainsearch%') order by ser_app_name ASC ) where rownum < 31 "; print "Debug> sql is:\n", "-" x 70, $sql, "\n", "-" x 70, "\n"; my $st = $dbh->prepare($sql); $st->execute();
Maybe that will expose something that shows you how to fix it.
If not, perhaps you can try sending the value displayed for $sql to the database by hand.
Update: By the way, once you've got the problem solved, you might consider shortening it a bit:
my $like_string = "like upper('%$mainsearch%') "; my @fields = qw( att_data mrserver owner_user lan_serv s_contact s_provider prod_de +liv ); my $like_clause = "where ser_app_name $like_string"; map { $like_clause .= " or $_ like $like_string" } @fields; # The simplified sql statement .... my $sql = " select * from ( select * from qatest $like_clause order by ser_app_name ASC ) where rownum < 31 ";
In reply to Re: Perl DBI / Variable Question
by liverpole
in thread Perl DBI / Variable Question
by Trihedralguy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |