lets say you have
create table BUGS(
bug_id number(20) is primary key,
owner varchar2(50),
subject varchar2(50),
status char(3),
assigned varchar2(8) );
You can use the following to get your table
to a hash of Array and do a sort on which ever column
you like, rather than using ORDER BY.
my $sth =
do->("SELECT bug_id, owner, subject, status, assigned FROM BUGS");
while (
my ( $bug_id, $owner, $subject, $status, $assigned ) =
$sth->fetechrow ) {
push @{$bugTable{$bug_id}},
( $owner, $subject, $status, $assigned );
}
print "Which column would you like to sort by?\n";
print "\t Bug_ID(1), Owner(2), Subject(3) ".
", Status(4) or Assigned_To(5) ?: ";
my $input = <STDIN>;
SWITCH: for ($input) {
/1/ && do {
@srtArr = sort { $a <=> $b } keys %bugTable;
last;
};
/2/ && do {
@srtArr =
sort { ${$bugTable{$a}}[0] cmp ${$bugTable{$b}}[0] } keys %bugTable;
last;
};
/3/ && do {
@srtArr =
sort { ${$bugTable{$a}}[1] cmp ${$bugTable{$b}}[1] } keys %bugTable;
last;
};
/4/ && do {
@srtArr =
sort { ${$bugTable{$a}}[2] cmp ${$bugTable{$b}}[2] } keys %bugTable;
last;
};
/5/ && do {
@srtArr =
sort { ${$bugTable{$a}}[3] cmp ${$bugTable{$b}}[3] } keys %bugTable;
last;
};
} # End of SWITCH.
for my $bug_id ( @srtArr ) {
print " @{$bugTable{$bug_id}} \n";
}