J'essaie de transmettre les noms de table à un sous-système qui obtient tous les noms de champs de cette table, les stocke dans un tableau, puis utilise ce tableau conjointement avec le fetchrow d'une autre requête sql pour afficher les données dans ces champs. Voici le code que j'ai maintenant:
Perl DBI dynamique fetchrow en boucle
Exemples d'appels sous avec des noms de table comme paramètre:
shamoo("reqhead_rec");
shamoo("approv_rec");
shamoo("denial_rec");
Shamoo sous:
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...
}
}
Je cherche un moyen de transformer cette Nto quelque chose qui ne doit pas être explicitement défini ....
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())
(clés% $ row) me donne ce - symbole mondial "% ligne" nécessite nom de package explicite à ./req.pl – CheeseConQueso
L'impression en devrait être pour: print « \ t $ col est $ row- > {$ col} \ n "; – Anon
Oups, c'est ce que je reçois pour ne pas tester. –