On 2014-02-18 02:27, SSC_perl wrote:
        I'm helping someone retrieve some info from a MySQL db and I'm having 
trouble sending multiple select statements with Perl.  Here's a portion of the 
code:

use SQL::SplitStatement;
my $query_4 = "CREATE TEMPORARY TABLE `temp_ip` AS
(SELECT `ip`
    FROM `ip_addresses` "
.$daily.
" AND TRIM(`referrer`) LIKE '' GROUP BY `ip` HAVING COUNT(*) > 1);
SELECT `ip`, `page`, `url`, `time_stamp`
FROM `ip_addresses` "
.$daily.
"AND TRIM(`referrer`) LIKE '' AND `ip` IN (SELECT `ip` FROM `temp_ip`)";

my $sql_splitter = SQL::SplitStatement->new(
    keep_terminators      => 1,
    keep_extra_spaces     => 1,
    keep_comments         => 0,
    keep_empty_statements => 1
);
my @statements = $sql_splitter->split($query_4);
my $sql_string = join ' ', @statements;
my $sth_4 = $dbh->prepare($sql_string);
$sth_4->execute();

        I believe what's throwing a wrench in it is the ";" separating the 2 
select statements.  That's why I'm using SQL::SplitStatement, but that doesn't seem to 
help, so I'm sure I'm doing something wrong.  The SQL works fine, so my problem must be 
with my Perl code.

        I've read everything I can get my hands on but no luck.  Any help would 
be greatly appreciated.


my $sth_4;

for ( my $sql = $sql_splitter->split($query_4) ) {

    $sth_4 and $sth_4->{Active} and die "Unfinished business";

    if ($sql =~ /^\s*(?:create|delete|insert|set|update)\b/x {
        $dbh->do( $sql );
    }
    else {
        $sth_4 = $dbh->prepare( $sql );
        $sth_4->execute();
    }
}

(untested)

--
Ruud



--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to