in reply to Re: Code flow not going to while loop
in thread Code flow not going to while loop

Hey, i have tried your solution but it is not working. Not printing while loop statements.

my $dbh = DBI->connect("DBI:DB2:xxx",'xxx','xxx',{ RaiseError => 0, Au +toCommit => 1 }) or die ("Could not connect to database :".DBI->errstr); my %hash = ( '2017-01-01 00:00:00' => '2017-01-31 00:00:00', '2017-02-01 00:00:00' => '2017-02-28 00:00:00', '2017-03-01 00:00:00' => '2017-03-31 00:00:00', '2017-04-01 00:00:00' => '2017-04-30 00:00:00', '2017-05-01 00:00:00' => '2017-05-31 00:00:00', '2017-06-01 00:00:00' => '2017-06-30 00:00:00', '2017-07-01 00:00:00' => '2017-07-31 00:00:00', '2017-08-01 00:00:00' => '2017-08-31 00:00:00', '2017-09-01 00:00:00' => '2017-09-30 00:00:00' ); #open(my $fh , "+>/var/www/bin/filesample.txt"); foreach my $key(sort keys %hash) { chomp($key); my $sql = "select distinct FID_CUST from session where DAT_END between + ? and ?"; chomp($sql); #print "\$sql = $sql\n"; my $sth = $dbh->prepare($sql); $sth->execute($key,$hash{$key}) or die "Couldn't execute statement: $D +BI::errstr"; print "sth: $sth\n"; while (my $arr = $sth->fetchrow_arrayref()){ print "in while\n"; print "@$arr\n"; } $sth->finish(); } #close FH; $dbh->disconnect;

Replies are listed 'Best First'.
Re^3: Code flow not going to while loop
by hippo (Archbishop) on Aug 02, 2017 at 15:50 UTC
    Not printing while loop statements.

    This is what you should expect if your query returns no matching rows. Use a query which you know will return a dataset first.

    As you are now using placeholders (which is good) consider preparing the query outside the foreach loop. It makes no sense to re-prepare the exact same query over and over.

      Man, i have run the same query in my database :p and it is running fine. Even here, if i use some select * statement, it is working fine. The datatype of these columns are 'TIMESTAMP' in my DB, may be there is some problem with that while parsing but again not sure.