I have two question related to the question below: 1. Is fetchrow() the fastest way in and out of the DB? I don't want the data warehouse tied up while someone is loading a huge report. 2. I would like to create frames with CGI so the list stays on the left side and the data is displayed on the right. #! /usr/local/bin/perl use CGI; my $query = new CGI; $ENV{ORACLE_HOME} = "/opt/app/oracle/product/8.1.7"; use DBI; $guess = ""; $oserver = "dwhs"; $ouser = "sward"; $opasswd = "notgonadoit"; $ora_dbh = DBI->connect("dbi:Oracle:$oserver", $ouser, $opasswd) || die "Can't connect to $data_source: $DBI::errstr"; $list_name = $query->param('list_name'); $day_list = $query->param('day_list'); #print "day_list = $day_list #print "list_name = $list_name \n"; if (! $list_name) { print $query->header; print $query->start_html( -title=>'Casual Reports', -BGCOLOR=>'3366CC'); print $query->startform("POST","/cgi-bin/steftest.cgi"); print $query->popup_menu(-name=>'list_name', -align=>'left', -values=>[ 'Total_games_sold', 'Yadda', 'Yoda', 'Ugo', ], }, -default=>[''], -size=>'1'); print "\n"; print $query->popup_menu(-name=>'day_list', -align=>'left', -values=>[1,7,30], -labels=> { '1'=>'1 day back', '7'=>'One week back', '30'=>'One month back', }, -default=>[''], -size=>'1'); print $query->submit( -name=>'button_name', -align=>'left', -value=>'value' ); print $query->endform; print $query->end_html; print "\n"; } else { $ora_sth = $ora_dbh->prepare ( q { select timestamp, report_type, data_name, data_value, from dwhs.mainstream_games_reports where report_type = ? and timestamp >= (sysdate - ?) } ) || die "Can't prepare statement: $DBI::errstr"; $rc = $ora_sth->execute($list_name, $day_list) || die "Can't execute statement: $DBI::errstr"; $query = new CGI; print $query->header, $query->start_html(-title=>'Action Game Report', -BGCOLOR=>'3366CC'); print "\n"; print $query->start_table({-border=>undef, -align=>'center'}); print "\n"; print $query->Tr( $query->th(['Date', 'Report Name', 'Data Name', 'Value']) ); print "\n"; while ( ($timestamp, $report_type, $data_name, $datavalue) = $ora_sth->fetchrow_array) { print $query->Tr( $query->td([$timestamp, $report_type, $data_name, $datavalue]) ); print "\n"; } $ora_dbh->disconnect; print $query->end_table; print "\n"; print $query->end_html; print "\n"; }