#!/usr/bin/perl use DBI; use strict; use warnings; my $dbh = DBI->connect('dbi:mysql:test','userid','password') or die "Cannot connect: $DBI::errstr\n"; my @sql =(); $sql[0] = qq[SELECT AccNum as Account, max(date) as Date, Type, count(*) as Total_No, sum(Amount) as Amount FROM transaction GROUP BY AccNum, Type union SELECT AccNum, max(date),'Balance', count(*), sum(if(type='Debit',-1*Amount,Amount)) FROM transaction GROUP BY AccNum;]; $sql[1] = qq[SELECT AccNum as Account, max(date) as Date, Type, 'CHEQUENO' as Subtype, count(*) as Total_No, sum(Amount) as Amount FROM transaction where chequeno is not null GROUP BY AccNum, Type union SELECT AccNum as Account, max(date) as Date, Type, 'DDNO' as Subtype, count(*) as Total_No, sum(Amount) as Amount FROM transaction where DDNO is not null GROUP BY AccNum, Type;]; $sql[2] = qq[desc transaction;]; $sql[3] = qq[select * from animals3;]; $sql[4] = qq[select * from transaction;]; $sql[5] = qq[call test.coldif("test.animals","test2.animals")]; open (FH, ">".$ENV{"TMP"}."\\mytmp.html") || die "Cannot open temporary file: $!\n"; print FH ''; foreach (@sql) { my $l = $_; $l =~ s/\n/
/g; print FH '

'.$l.'

'; my $tran_cur = $dbh->prepare($_)or print FH '

Cannot prepare: '."$DBI::errstr

"; $tran_cur->execute or print FH '

SQL Error: '."$DBI::errstr

"; unless(defined $DBI::err){ print FH ''; map {print FH ""}@{$tran_cur->{NAME}}; print FH "
"; while( my @data = $tran_cur->fetchrow_array) { print FH ""; map {print FH "";}@data; print FH ""; } print FH "
$_
"; my $r = defined ($_) ? $_ : ' '; print FH length ($r)>0 ? $r: ' '; print FH "
"; } } print FH "

".$ENV{"TEMP"}."\\result.html

\n"; print FH "\n"; close FH; my $url = "file://".$ENV{"TMP"}."\\mytmp.html"; my $commandline = qq{start "$url" "$url"}; system($commandline) == 0 or die qq{Couldn't launch '$commandline': $!/$?}; $dbh->disconnect; sleep(5); unlink $ENV{"TMP"}."\\mytmp.html" or warn "Could not unlink ".$ENV{"TMP"}."\\mytmp.html: $!"; #print $ENV{"TEMP"}."\\result.html"; __DATA__ SELECT AccNum, Type, SUM(Amount) FROM transaction GROUP BY AccNum, Type; SELECT AccNum, count(*), max(date), Type, sum(Amount) FROM transaction GROUP BY AccNum, Type union SELECT AccNum, max(date),'Balance', count(*), sum(if(type='Debit',-1*Amount,Amount)) FROM transaction GROUP BY AccNum; SELECT * FROM transaction t where chequeno is not null or ddno is not null; SELECT AccNum, Type, sum(Amount) FROM transaction e GROUP BY AccNum, Type; DROP TABLE IF EXISTS test2.transaction; CREATE TABLE test2.transaction ( TranID int(10) unsigned NOT NULL, Date date NOT NULL, AccNum int(10) unsigned NOT NULL, Type enum('Credit','Debit') NOT NULL, Amount decimal(10,2) NOT NULL, ChequeNo int(10) unsigned DEFAULT NULL, DDNo int(10) unsigned DEFAULT NULL, PRIMARY KEY (TranID) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; insert into entries values(TranID,Date,AccNum,Type,Amount,ChequeNo,DDNo'); insert into entries values(657520,'1999-07-02',0181432,'Debit',16000,465774,null); insert into entries values(657524,'1999-07-02',0181432,'Debit',13000,null,569086); insert into entries values(657538,'1999-07-09',0181432,'Credit',11000,null,null); insert into entries values(657548,'1999-07-18',0181432,'Credit',15500,null,null); insert into entries values(657519,'1999-07-02',0181432,'Debit',12000,null,null); insert into entries values(657523,'1999-07-02',0181432,'Credit',11000,null,null); insert into entries values(657529,'1999-07-03',0181432,'Debit',15000,466777,null); insert into entries values(657539,'1999-07-10',0181432,'Credit',10000,null,null); insert into entries values(657541,'1999-07-11',0181432,'Debit',12000,null,null); insert into entries values(657525,'1999-07-03',0181432,'Debit',15000,null,569999); insert into entries values(657533,'1999-07-05',0181432,'Credit',12500,null,null);