The program below prints nothing when the date filter is in the where clause
(TO_CHAR(SHIPDATE, 'MMDDYY') = TO_CHAR(SYSDATE-21, 'MMDDYY') ).

The query work fine when I take this statement out. The query also works
fine when I run it form the CLI.

What do I need to do to make this program work? Your help is appreciated.


++++++++++++++++++++++++++++++++++
use DBI;
use strict;

### Connect to the database
my $database;
my $username = '';
my $password = '';

my $dbh = DBI->connect( "dbi:Oracle:cbarch", $username, $password, {
   RaiseError => 1,ChopBlanks=>1});

### Prepare and execute an SQL statement
my $sth = $dbh->prepare("SELECT
 s.REFNUMBER,
 s.ORDERNUM,
 o.MEMBERFIRSTNAME,
 o.MEMBERLASTNAME,
 o.mEMBERADDRESSLINE1,
 o.mEMBERADDRESSLINE2,
 o.MEMBERADDRESSCITY,
 o.MEMBERADDRESSSTATE,
 o.MEMBERADDRESSZIP5,
 s.shipdate
FROM
 orderstatic o,
 shippingpackage s
WHERE
 o.ordernum = s.ordernum and
   TO_CHAR(SHIPDATE, 'MMDDYY') = TO_CHAR(SYSDATE-21, 'MMDDYY') and
 actualservice =1 and
 SUBSTR(s.REFNUMBER,9,2)   in
('35','24','19','39','42','29','A2','58','A3','A4','A5','A6','A7','A8')");

print "Statement:     $sth->{Statement}\n";

my $fields = $sth->{NUM_OF_FIELDS};
for ( my $i = 0 ; $i < $fields ; $i++ ) {

   my $name = $sth->{NAME}->[$i];
   print $name .",";

}
print "\n";

$sth->execute() or die "Cannot Execute";


while (my @listref = $sth->fetchrow_array) {

   print join(",",@listref);

}

Reply via email to