2009-04-06 6 views
3

est sous le code que je utilise pour exécuter la requête, analyser l'ensemble des résultats et analyser les lignes (respectivement)

Comment puis-je récupérer les noms de champs SQL d'une table temporaire à l'aide de Perl?

$exec_ret = $DBS->SQLExecSQL($STMT); 

while ($DBS->SQLFetch() == *PLibdata::RET_OK) 
{ 
     $rowfetch = $DBS->{Row}->GetCharValue($colname[$i]); 
} 

Puis-je saisir le nom de la colonne/champ d'une table temporaire en utilisant la même syntaxe? $colname[$i] est prédéfini en haut pour contenir les noms de colonnes/champs. Ceci est codé en dur en ce moment, mais je préfère l'automatiser en poussant les valeurs dans $colname à l'intérieur d'une boucle qui s'exécute avant que les lignes ne soient analysées.

Répondre

6

Quel module utilisez-vous pour l'accès à la base de données? Je ne reconnais pas les noms des méthodes.

Si vous utilisez DBI, vous pouvez obtenir les noms de colonnes de la poignée de déclaration après son exécution:

my $sth = $dbh->prepare($STMT); 
$sth->execute; 
my $columns = $sth->{NAME_uc}; 

while (my $row = $sth->fetch) { 
    for my $i (0 .. $#$row) { 
    print "$columns->[$i]: $row->[$i]\n"; 
    } 
    print "\n"; 
} 

Il y a 3 versions des noms de colonnes: NAME donne les noms de colonnes que les déclarations de base de données eux, NAME_lc les convertit en minuscules, et NAME_uc les convertit en majuscules. Si vous vous souciez de l'indépendance de la base de données, je vous suggère d'éviter NAME et d'utiliser l'un des deux autres.

+0

fonctionne ce , je souhaite juste que je l'ai eu avec l'autre module - je pense que c'est celui inné à Informix, mais pas sûr. – CheeseConQueso

+0

Qu'est-ce que l'autre module? – cjm

0

Essayez d'exécuter AFFICHER TABLE yourtable et de le traiter comme s'il s'agissait d'un SELECT.

+0

Ce MySQL est spécifique ... –

+0

ouais, im sur Informix - afficher les colonnes pour le tableau montre les cols, je vais essayer, merci pour le point de départ cependant, il est logique – CheeseConQueso

+0

* colonnes d'information pour la table – CheeseConQueso

Questions connexes