/usr/local/CPAN/Apache-AxKit-Provider-RDBMS/Apache/AxKit/Provider/RDBMS/ContentProvider/MultiSQL.pm


package Apache::AxKit::Provider::RDBMS::ContentProvider::MultiSQL;

use base qw( Apache::AxKit::Provider::RDBMS::ContentProvider );
use DBI;
use strict;

sub getContent {
    my $this = shift;
    my $dbiString    = $this->{apache}->dir_config("DBIString");
    my $dbiUser      = $this->{apache}->dir_config("DBIUser");
    my $dbiPwd       = $this->{apache}->dir_config("DBIPwd");
    my @sqlStatements = $this->{apache}->dir_config->get("DBIQuery");
    
    my $dbh = DBI->connect($dbiString, $dbiUser, $dbiPwd);
    
    my $xml = "<?xml version='1.0'?>";
    my $sqlStatement;
    my $sth;
    my $rows;
    my $row;
        
    $xml .= "<sql-results>";
    
    foreach $sqlStatement ( @sqlStatements ) {
        $sqlStatement =~ s/(\w+) => //;
        
        $sth = $dbh->prepare( $sqlStatement );
        $sth->execute();
    
        $rows = $sth->fetchall_arrayref( {} );
        $row;
    
        $xml .= "\n<sql-result name='$1'>\n";
    
        foreach( @{ $rows }  ) {
            $row = $_;
            $xml .= "\n<row>\n";
        
            foreach( keys %{ $row } ) {
                $xml .= "<column name='$_'>".$row->{$_}."</column>\n";
            }
        
            $xml .= "</row>";
        }
    
        $xml .= "</sql-result>\n";
    }

    $xml .= "</sql-results>";
        
    return $xml;
}

return 1;