Je tente de passer une requête sur une base Oracle ( à priori en
version 8.1.7 ), pour cela je n'ai d'autres choix que d'utiliser une
connexion ODBC.
Tout se passe bien, je peux passer des requetes de select sauf sur
certaines tables ( oui je sais c'est ahurissant ).
Exemple : je fais un "select * from table2"
j'obtiens le retour suivant :
911[Microsoft][Gestionnaire de pilotes ODBC] Erreur de séquence de la
fonction1
alors que pour un "select * from table1" tout se passe à la perfection
!
Le driver que j'utilise est INTERSOLV 3.00 32-bit Oracle7
J'ai bien essayé de le mettre à jour mais après l'install d'un driver
plus récent, lors de la configuration d'une connexion odbc j'obtiens :
"les routines d'installation du driver odbc n'ont pu être chargées en
raison de l'erreur système code 126" puis "impossible de charger la
bibliothèque d'installation ou de convertisseur"
Pour finir le script que j'utilise :
use Win32::ODBC;
$DSN="DSN=dsn;UID=user;PWD=pass;";
if (!($db = new Win32::ODBC($DSN))){
print "Erreur (non connecté à la base): " . Win32::ODBC::Error() .
"\n";
} else {
print "Connecté à la base\n";
$sql = "SELECT * FROM table2";
$db->Sql($sql);
# Récupération des résultats sous forme de tableau
while ($db->FetchRow()) {
undef %data;
%data = $db->DataHash();
foreach $i ( keys %data ){
#print "$i $data{$i}";
}
print "\n";
}
print Win32::ODBC::Error();
# fermeture de la base
$db->Close();
}
Je tente de passer une requête sur une base Oracle ( à priori en version 8.1.7 ), pour cela je n'ai d'autres choix que d'utiliser une connexion ODBC.
Pourquoi? DBI est écrit pour Oracle, et est même carrément plus performant qu'OBDC, il n'y a pas d'hésitation à avoir.
-- Denis
Emmanuel Florac
Le Tue, 19 Apr 2005 09:47:46 -0700, Yann78 a écrit :
Tout se passe bien, je peux passer des requetes de select sauf sur certaines tables ( oui je sais c'est ahurissant ).
Ce n'est pas ahurissant du tout. Il doit y avoir des types particuliers dans la table qui pose problème (par exemple des LOBs). En général mieux vaut éviter "select *", et s'emmerder à écrire le nom des champs que l'on veut récupérer....
-- Quidquid latine dictum sit, altum sonatur
Le Tue, 19 Apr 2005 09:47:46 -0700, Yann78 a écrit :
Tout se passe bien, je peux passer des requetes de select sauf sur
certaines tables ( oui je sais c'est ahurissant ).
Ce n'est pas ahurissant du tout. Il doit y avoir des types particuliers
dans la table qui pose problème (par exemple des LOBs). En général
mieux vaut éviter "select *", et s'emmerder à écrire le nom des champs
que l'on veut récupérer....
Le Tue, 19 Apr 2005 09:47:46 -0700, Yann78 a écrit :
Tout se passe bien, je peux passer des requetes de select sauf sur certaines tables ( oui je sais c'est ahurissant ).
Ce n'est pas ahurissant du tout. Il doit y avoir des types particuliers dans la table qui pose problème (par exemple des LOBs). En général mieux vaut éviter "select *", et s'emmerder à écrire le nom des champs que l'on veut récupérer....