in reply to SQL query using elements from array
Other changes I made:#!/usr/bin/perl use DBI; use strict; my @date1 = ('2013-08-01 00:00:00.000','2013-08-02 00:00:00.000'); my @date2 = ('2013-08-02 00:00:00.000','2013-08-03 00:00:00.000'); my $dbh = DBI-> connect('dbi:ODBC:DSN=TEST-DB1;UID=SA;PWD=pass') or di +e "CONNECT ERROR! :: $DBI::err $DBI::errstr $DBI::state $!\n" my $sql2 = <<EOSQL; SELECT Login_ID, AuditChrt_TimeStamp, Patient_ID FROM TopsData.dbo.AUDT_AuditChrt WHERE master.dbo.fn_sqlvarbasetostr(AuditChrt_TimeStamp) >= ? AND master.dbo.fn_sqlvarbasetostr(AuditChrt_TimeStamp) <= ? EOSQL my $sth = $dbh->prepare($sql2); foreach my $i (0 .. @date1 - 1) { $sth->execute($date1[$i], $date2[$i]); my @row; while (@row = $sth->fetchrow_array) { # retrieve one row at a tim +e print join(", ", @row), "\n"; } } END { $dbh->disconnect if $dbh; }
I used a heredoc (Quote and Quote like Operators in perlop) to separate the SQL from the Perl code; IMHO, it makes things more legible
I swapped to a foreach loop, since that structure is less bug prone than C-style loops -- fewer moving parts.
I moved the disconnect to an END block (with conditional) so that no matter how your code exits, you won't get that pesky Issuing rollback warning.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: SQL query using elements from array
by McA (Priest) on Oct 03, 2014 at 23:31 UTC | |
by AllPaoTeam (Sexton) on Oct 06, 2014 at 18:11 UTC |