in reply to Perl DBI / Variable Question

Hi Trihedralguy,

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 ";

s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/