salut,
Est ce que quelqu un connait la synthaxe en perl pour pouvoir faire du sqlplus;
en shelle c'est quelquechose dans se genre
Code:sqlplus login/password@database marequetesql
Merci
Version imprimable
salut,
Est ce que quelqu un connait la synthaxe en perl pour pouvoir faire du sqlplus;
en shelle c'est quelquechose dans se genre
Code:sqlplus login/password@database marequetesql
Merci
faut il regarder du coté dela fonction system
system 'sqlplus login/password@database' ??
en perl il faut utiliser DBI et ses drivers DBD (DBD::Oracle dans ton cas)
merci
je viens d installer le module
j'ai fait ce code
Code:
1
2
3
4
5
6
7
8
9
10 #!/usr/bin/perl use DBI; $user = 'toto'; $password = 'xxx'; $dbconnectstring = 'basetest'; $dbh = DBI->connect('dbi:Oracle:',$user.'@'.$password,$dbconnectstring);
j'ai cette erreur
je pije pas trop ?Citation:
DBI connect('','toto@basetest',...) failed: ORA-12154: TNS:could not resolve
the connect identifier specified (DBD ERROR: OCIServerAttach) at C:\Documents a
nd Settings\donny\Bureau\doc\connect.pl line 10
si je souhaite le faire avec sqlplus
je peux utiliser sytem :
system 'sqlplus ....';
????
Je ne comprends pas, où est le problème ?
Cela fait presque 24h que tu as posé la question si tu pouvais utiliser la commande system, pourquoi n'essaies-tu pas ? La seule personne qui peut te dire si tu peux ou pas, c'est ton admin système ou ton boss, selon le projet...
si tu veux le lancer à l'aide de system, il te faudra faire une liste:
Code:system("program", "arg1", "arg2");
c'est peut-être plus simple d'utiliser qx:
Code:qx/program arg1 arg2/;
ou directement, l'appeler de la manière suivante:
Code:`program arg1 arg2`;
si je viens ici c'est que je ne comprends
le but d'un forum c'est d'aider les autres
et pour le moment j'ai pas compris donc je viens
si sa prend 24h ou 48h ou 108ans c'est mon probleme
la seule chose que je voulais savoir c'etait si je pouvais en perl, appeler la commande sqlplus comme on le ferai dans un shell et executer ma requetes par la suite;
On m'a dit de regarder DBI je viens de voir et sa me convient pas;
je veux le faire avec sqlplus;
Merci
Certes, mais quand tu disposes d'une solution (tu as parlé de la commande system, c'est donc que tu sais qu'elle existe), pourquoi ne pas l'expérimenter ?Citation:
Envoyé par donny
Un forum est fait pour te mettre sur une piste, pas pour t'apporter une solution toute faite !
qui à parler de solution toute faite;
La premiere chose que j'ai demander
c'est
est ce que je peux le faire avec system
j'ai l'impression que ya de la mauvaise foi sur ce forum
et les personnes sont avare en conseil
Le problème avec sqlplus, si mes souvenirs sont bons, c'est qu'il ne renvoie pas dans la sortie standard le résultat des requêtes, donc tu pourras juste t'en servir pour executer des ordres genre insert ou update, sans avoir le code de retour. Si tu lances un select, tu n'auras pas le résultat non plus. donc son intêret est limité !
Il vaut mieux utiliser le module DBI et installer le driver DBD::Oracle, comme conseillé plus haut. Après, pour la chaine de connexion, une simple recherche google "perl DBI Oracle" me donne les liens suivants:
http://www.med.univ-rennes1.fr/~poul...troperl35.html
http://www.orafaq.com/faqperl.htm
Et donc si on compare au code que tu as utilisé, on voit que tu n'as pas précisé le nom de la base au bon endroit, et que ton code devrait être
Code:
1
2
3
4
5
6
7
8
9
10
11 #!/usr/bin/perl use DBI; $user = 'toto'; $password = 'xxx'; $schema = 'basetest'; $dbh = DBI->connect("dbi:Oracle:$schema", $user, $password) || die("impossible de se connecter à $schema");
le code que tu viens de me montrer avec DBI
j'ai fait une chose dans ce genre
mais comme je devait utiliser sqlplus j'ai modifier avec system et j'ai fait cela
mais le truc est par rapport au code de retourCode:
1
2
3
4
5
6
7
8
9
10 $result = system ('echo "select * from dual;" | sqlplus -s /nolog >> /dev/null user/pass@mabase') ; if ($result == 0) { print "La connexion fonctionne\n"; } else { print "La ne connexion fonctionne pas\n"; }
je viens de tester et j'ai 0 en code de retour;
mais si je modifie ma requete et je fait un select sur une table qui n'existe pas, j'ai aussi un 0 en code de retour ou si je modifie le user;
apparament si je n'ai pas de bon code de retour je vais peut etre re opter pour DBI
juste une question
j'ai ce code qui peut me permettre d'avoir le bon code de retour
j'ai juste un petit soucis
si je le met ainsi dans system
comme il est sur plusieurs ligne sa bogueCode:
1
2
3
4
5
6 system ("sqlplus username/password@instance <<-!EOSQL WHENEVER SQLERROR exit 5 select dummy from dual; exit 0 !EOSQL ';");
j'ai essayer de le mettre dans une variable
sa plante aussi;Code:
1
2
3
4
5
6
7
8 $code = "'sqlplus username/password@instance <<-!EOSQL WHENEVER SQLERROR exit 5 select dummy from dual; exit 0 !EOSQL ';"; system ($code);
je viens de reessayer et sa fonctionne
j'ai bien un code = 0 en cas de succes et different dans les autres cas