Rechercher : dans
Par :

Perl et SQL

Dernière réponse le 12 jun 2006 à 09:26:14 gothen, le 8 jun 2006 à 12:30:30 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Perl et SQL » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Télécharger MS SQL Migrate VoirPour des raisons pratique ou quasiment professionnel, il est nécessaire de convertir des bases de données entre différents formats. Le principal, c’est qu’il n’y ait aucune perte de donnée lors de la conversion. MS SQL Migrate est...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

gothen, le 9 jun 2006 à 09:09:47

Pas d'idée?:p

Répondre à gothen

2

lami20j, le 9 jun 2006 à 10:47:13

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

Répondre à lami20j

3

gothen, le 9 jun 2006 à 12:31:08

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.

Répondre à gothen

4

gothen, le 9 jun 2006 à 12:31:38

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.

Répondre à gothen

5

lami20j, le 9 jun 2006 à 20:15:32

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

Répondre à lami20j

6

 gothen, le 12 jun 2006 à 09:26:14

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

Répondre à gothen