Perl et SQL

Fermé
gothen - 8 juin 2006 à 12:30
 gothen - 12 juin 2006 à 09:26
Bonjour,
Je voudrais savoir comment faire pour récuperer via sqlplus le résultat d'une requete SQL.
Je sais le faire en utilisant un fichier tmp_spool...aprés je dois parser ce fichier pr trouver le résultat de la requete.
Comment avoir directement le résultat?

Mon code avec le fichier de sortie tmp_spool:

open(SQLPLUS,"|sqlplus $db_user/$db_pass$D1KEU2|");
print "sqlplus $db_user/$db_pass$D1KEU2";
print SQLPLUS "spool $tmp_spool\n";
print SQLPLUS ("select status from sc_job_tco where job_id=24;\n");
print "select status from sc_job_tco where job_id=24;\n"
print SQLPLUS "spool off\n";
print SQLPLUS "quit\n";
close(SQLPLUS);

Le but étant de récupere directement dans une variable le status de la requete "select status from sc_job_tco where job_id=24;"

Je ne veux pas utiliser le module DBI.

Merci d'avance pr ceux qui pourront m'orienter.
A voir également:

4 réponses

Pas d'idée?:p
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 juin 2006 à 10:47
Salut,

Tu dit que Je sais le faire en utilisant un fichier tmp_spool... et ensuite aprés je dois parser ce fichier pr trouver le résultat de la requete.


Donc ton prolbème est où? D'après ce que je comprends c'est plutôt dans le parsing que dans la récuperation tant que tu utilise tmp_spool?

Et pour le parsing tu n'as pas besoin de DBI.

En bref je n'ai pas bien compris où et ton problème. Merci.

lami20j
0
salut!
je sais faire du sqlplus dans un fichier comme sur l'exemple dans tmp_spool...mon probléme c'est que je voudrais faire du sqlplus sans passer par un fichier:
executer la requete et récuperer la ou les valeurs que me retourne ma requete dans une variable ou un tableau.Est-ce possible?
Sans quoi je serai oblié de travailler avec le fichier tmp_spool.
0
salut!
je sais faire du sqlplus dans un fichier comme sur l'exemple dans tmp_spool...mon probléme c'est que je voudrais faire du sqlplus sans passer par un fichier:
executer la requete et récuperer la ou les valeurs que me retourne ma requete dans une variable ou un tableau.Est-ce possible?
Sans quoi je serai oblié de travailler avec le fichier tmp_spool.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 juin 2006 à 20:15
Salut,

open(SQLPLUS,"|sqlplus $db_user/$db_pass$D1KEU2|");


Tu as ouvert un handle en lecture.

Essaie d'utiliser le mode slurp
undef $/;
my $var = <SQLPLUQ>;
# ensuite traitement de $var
Ou avec une boucle
while ( <SQLPLUS> ) {
 #traitement
}
lami20j
0
Merci pour ta réponse...je suis pas hyper doué mais voila ce que j'ai essayé:
open(SQLPLUS,"|sqlplus $db_user/$db_pass$D1KEU2 \@temp.sql|");
undef $/;
my $var = <SQLPLUS>;
print "le resultat est $var";

Sachant que dans tem.sql, le résultat de la requete(select status from sc_job_tco where job_id=24;) est 'D'
Merci lamij20
0