Я пытаюсь передать имена таблиц в подпрограмму, которая получает все имена полей этой таблицы, сохраняет их в массиве, а затем использует этот массив в сочетании с выборкой другого SQL-запроса для отображения данных в этих поля. Вот код, который у меня есть сейчас:
Примеры вложенных вызовов с именами таблиц в качестве параметра:
shamoo("reqhead_rec");
shamoo("approv_rec");
shamoo("denial_rec");
Shamoo Sub:
sub shamoo
{
my $table = shift;
print uc($table)."\n=====================================\n";
#takes arg (table name) and stores all the field names into an array
$STMT = <<EOF;
select first 1 * from $table
EOF
my $sth = $db1->prepare($STMT);$sth->execute;
my ($i, @field);
my $columns = $sth->{NAME_lc};
while (my $row = $sth->fetch){for $i (0 .. $#$row){$field[$i] = $columns->[$i];}}
$STMT = <<EOF;
select * from $table where frm = '$frm' and req_no = $req_no
EOF
$sth = $db1->prepare($STMT);$sth->execute;
$i=0;
while ($i!=scalar(@field))
{
#need code for in here...
}
}
Я ищу способ превратить это во что-то, что не должно быть явно определено ....
my ($frm, $req_no, $auth_id, $alt_auth_id, $id_acct, $seq_no, $id, $appr_stat, $add_date, $approve_date, $approve_time, $prim);
while(($frm, $req_no, $auth_id, $alt_auth_id, $id_acct, $seq_no, $id, $appr_stat, $add_date, $approve_date, $approve_time, $prim) = $sth->fetchrow_array())