IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

perl et sqlplus


Sujet :

SGBD Perl

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut perl et sqlplus
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/password@database  marequetesql

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    faut il regarder du coté dela fonction system

    system 'sqlplus login/password@database' ??

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    en perl il faut utiliser DBI et ses drivers DBD (DBD::Oracle dans ton cas)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    merci
    je viens d installer le module
    j'ai fait ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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
    je pije pas trop ?

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    si je souhaite le faire avec sqlplus
    je peux utiliser sytem :
    system 'sqlplus ....';

    ????

  6. #6
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    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 perl : Sélectionner tout - Visualiser dans une fenêtre à part
    system("program", "arg1", "arg2");

    c'est peut-être plus simple d'utiliser qx:

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    qx/program arg1 arg2/;

    ou directement, l'appeler de la manière suivante:

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    `program arg1 arg2`;

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    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

  8. #8
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par donny
    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
    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 ?

    Un forum est fait pour te mettre sur une piste, pas pour t'apporter une solution toute faite !

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    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

  10. #10
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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");

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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";
    }
    mais le truc est par rapport au code de retour
    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

  12. #12
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    system ("sqlplus username/password@instance <<-!EOSQL
             WHENEVER SQLERROR  exit 5
             select dummy from dual;
             exit 0
    !EOSQL
    ';");
    comme il est sur plusieurs ligne sa bogue
    j'ai essayer de le mettre dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    sa plante aussi;

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    je viens de reessayer et sa fonctionne
    j'ai bien un code = 0 en cas de succes et different dans les autres cas

Discussions similaires

  1. Problème sqlplus et script Perl
    Par brunolekid dans le forum Linux
    Réponses: 1
    Dernier message: 28/12/2009, 10h49
  2. Substituer sqlplus par un script perl DBD::Oracle
    Par Konrad Florczak dans le forum SGBD
    Réponses: 2
    Dernier message: 19/01/2007, 14h50
  3. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  4. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 17h22
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo