in reply to Re^4: Perl connection string to Oracle Database
in thread Perl connection string to Oracle Database
Consider that if i run this query manually through SQL developer client i got different output, in particular records number does not match with script parameter $hashKeysNum. If i compare output between Perl ($hashKeysNum variable) and TOAD, they MATCH. Thanks. Regards, Fabriziosub getDTfromDBnew { bopc_log(":::::::::::::::::::::::::::::::::::::::::::::::::::"); bopc_log ("Estraggo lista DA da DB (query NUOVA)"); my $user = "user"; my $password = "password"; my $dbh = DBI->connect("dbi:Oracle://<ALIAS>:1531/<SID>",$user, $p +assword, { RaiseError => 1, AutoCommit => 0 }); my $sql ="select ID, DT_NAME from ( SELECT d.ID, d.DT_NAME, s.SCHEDULE_TYPE, s.start_date, s.end_date, s.duration, s.start_time, s.selected_ +days ,CAST((FROM_TZ(CAST((START_DATE / (60*60*24*1000)) + to_date('0 +1011970','DDMMYYYY') AS TIMESTAMP),'+00:00') AT TIME ZONE SCHEDULE_TI +MEZONE) AS DATE) START_DATE_CONV ,CAST((FROM_TZ(CAST((END_DATE / (60*60*24*1000)) + to_date('010 +11970','DDMMYYYY') AS TIMESTAMP),'+00:00') AT TIME ZONE SCHEDULE_TIME +ZONE) AS DATE) END_DATE_CONV ,(sysdate) TS_NOW ,( To_number(To_char(SYSDATE, 'HH24')) * 3600 + To_number(To_ch +ar(SYSDATE, 'MI')) * 60 )+(To_number(Decode( To_char(SYSDATE, 'D'), 7 +, 0, To_char(SYSDATE, 'D')))*86400) TSX ,((to_number(to_char(sysdate, 'HH24'))*3600 + to_number(to_char +(sysdate, 'MI'))*60) + (extract(DAY FROM sysdate)*86400)) TS_MONTH FROM BSMMOM_PROD_MGMT.DT_DOWNTIME d inner join BSMMOM_PROD_MGMT.DT_SC +HEDULE s on d.SCHEDULE_ID = s.ID ) where ( ( SCHEDULE_TYPE = 1 and TS_NOW >= START_DATE_CONV and TS_NOW < END_DATE_CO +NV ) or ( SCHEDULE_TYPE = 2 and TS_NOW >= START_DATE_CONV and ((END_ +DATE = 0) or (END_DATE <> 0 and TS_NOW < END_DATE_CONV)) and ( ( ((0*86400+start_time)<TSX) AND ( ( (0*864 +00+start_time+duration)<(7*86400) AND (0*86400+start_time+duration) + > TSX ) OR ( (0*86400+start_time+duration)>=(7*86400) AND ((0*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 0)) > 0 ) OR ( ((1*86400+start_time)<TSX) AND ( ( (1*864 +00+start_time+duration)<(7*86400) AND (1*86400+start_time+duration) + > TSX ) OR ( (1*86400+start_time+duration)>=(7*86400) AND ((1*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 1)) > 0 ) OR ( ((2*86400+start_time)<TSX) AND ( ( (2*864 +00+start_time+duration)<(7*86400) AND (2*86400+start_time+duration) + > TSX ) OR ( (2*86400+start_time+duration)>=(7*86400) AND ((2*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 2)) > 0 ) OR ( ((3*86400+start_time)<TSX) AND ( ( (3*864 +00+start_time+duration)<(7*86400) AND (3*86400+start_time+duration) + > TSX ) OR ( (3*86400+start_time+duration)>=(7*86400) AND ((3*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 3)) > 0 ) OR ( ((4*86400+start_time)<TSX) AND ( ( (4*864 +00+start_time+duration)<(7*86400) AND (4*86400+start_time+duration) + > TSX ) OR ( (4*86400+start_time+duration)>=(7*86400) AND ((4*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 4)) > 0 ) OR ( ((5*86400+start_time)<TSX) AND ( ( (5*864 +00+start_time+duration)<(7*86400) AND (5*86400+start_time+duration) + > TSX ) OR ( (5*86400+start_time+duration)>=(7*86400) AND ((5*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 5)) > 0 ) OR ( ((6*86400+start_time)<TSX) AND ( ( (6*864 +00+start_time+duration)<(7*86400) AND (6*86400+start_time+duration) + > TSX ) OR ( (6*86400+start_time+duration)>=(7*86400) AND ((6*864 +00+start_time+duration)-(7*86400)) > TSX ) ) AND Bitand(selected_da +ys, Power(2, 6)) > 0 ) ) ) or ( SCHEDULE_TYPE = 3 and TS_NOW >= START_DATE_CONV and ((END_ +DATE = 0) or (END_DATE <> 0 and TS_NOW < END_DATE_CONV)) and ( ( ((SELECTED_DAYS * 86400 + START_TIME) <= + TS_MONTH) AND ((SELECTED_DAYS * 86400 + START_TIME + DURATION) > TS_ +MONTH) ) ) ) )"; #print "$sql\n"; my $sth = $dbh->prepare($sql); my $counter=0; $sth->execute(); while (my @row = $sth->fetchrow_array) { #print "fname: $row[0] lname: $row[1]\n"; $dtFromDB{lc($row[0])}= $row[1]; } bopc_log(":::::::::::::::::::::::::::::::::::::::::::::::::::"); foreach my $key (keys %dtFromDB) { #print "DB --> KEY: $key - VALUE: $dtFromDB{$key}\n"; bopc_log (" DB DT --> KEY: $key - VALUE: $dtFr +omDB{$key}\n"); #bopc_log ("DT $counter: $list[0]:$list[2]"); } my $hashKeysNum=scalar keys %dtFromDB; #print "HASH HAS # KEYS: $hashKeysNum\n"; bopc_log(":::::::::::::::::::::::::::::::::::::::::::::::::::"); bopc_log("DB QUERY NUOVA riporta $hashKeysNum DT Attivi"); $dbh->disconnect;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Perl connection string to Oracle Database
by Corion (Patriarch) on Oct 26, 2015 at 17:41 UTC | |
by fabrizio_start_perl (Novice) on Oct 27, 2015 at 11:50 UTC | |
by Corion (Patriarch) on Oct 27, 2015 at 11:58 UTC | |
by fabrizio_start_perl (Novice) on Oct 27, 2015 at 17:35 UTC | |
by Corion (Patriarch) on Oct 27, 2015 at 17:44 UTC | |
|