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 :

[débutant] connexion à une base oracle


Sujet :

SGBD Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [débutant] connexion à une base oracle
    bonjour,

    pour mal commencer, je ne connais rien à perl... mais je dois utiliser un script perl sur une base de données Oracle 8.0. Sous windows XP, j'ai donc :

    - installé activePerl 5.8.8
    - installé DBI v1.53 via l'interface graphique (il y a aussi le v1.52 qui semble aussi installé)
    - installé DBD::Oracle v1.17 via le dos
    - installé le client Oracle, SQL*plus, easy config et configuré une instance
    - mit en variable d'environement "ORACLE_HOME=c:\appli\orant" et "TNS_ADMIN=c:\appli\orant\NET80\ADMIN"

    je teste tout ça avec ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/usr/bin/perl
    use DBI;
     
    my $db = 'DBI:Oracle:ORCL';
    my $utilisateur = 'toto';
    my $motdepasse = 'titi';
     
    # my $dbconnect = DBI->connect($db, $utilisateur, $motdepasse);
    my $dbconnect = DBI->connect("DBI:Oracle:dbname=orcl;host=x.x.x.x;port=1521",$utilisateur,$motdepasse);
    # my $dbconnect = DBI->connect("dbi:Oracle:host=x.x.x.x;sid=ORCL", $utilisateur, $motdepasse);
     
    my $sql = qq{ SELECT * FROM clients; };
    $dbconnect->do($sql);
    $dbconnect->disconnect();
    et maintenant, le résultat :
    1. ça m'ouvre une fenêtre de dialogue disant ceci : "le point d'entrée de procédure OCILobIsTemporary est introuvable dans la bibliothèque de liaisons dynamique OCI.DLL". Puis,

    2. dans le dos :
    install_driver(Oracle) failed: Can't load 'C:/Perl/site/lib/auto/DBD/Oracle/Orac
    le.dll' for module DBD::Oracle: load_file:La procÚdure spÚcifiÚe est introuvable
    at C:/Perl/lib/DynaLoader.pm line 230.
    at (eval 4) line 3
    Compilation failed in require at (eval 4) line 3.
    Perhaps a required shared library or dll isn't installed where expected
    at test2.pl line 9

    Donc voila ou j'en suis au bout d'un certain nombre d'heure avec perl Si quelqu'un à une idée, ça serait le bonheur...

    Merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Connexion à une base Oracle.
    A mon avis, tu es tombé sur un bug Perl/DBD Oracle.

    Essaie d'abord de passer ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    use strict;
    use DBI;
    my $Bdd = "DBI:Oracle::ORCL"; # nom de ta BDD
    my $User = "toto"; # nom du user A CHANGER !
    my $Pass = "titi"; # passwd user A CHANGER
     
    my $dbh; # handle sur la base
    my $sel_ent; # selection de la table entreprise
    my @row_ent = (); # une ligne d'entreprise
     
    my $CompteurTest = 20; # compteur pour les tests
     
    if ($dbh = DBI->connect($Bdd, $User, $Pass)) {
            print "Connexion reussie !!!\n";
        } else {
            print "ERREUR : $DBI::errstr\n";
            exit();
    }
    # préparation d'une requête .
    $sel_ent = $dbh->prepare("SELECT * FROM clients;");
    $sel_ent->execute || die "selection impossible: $DBI::errstr";
     
    # je liste
    print "Voici la liste.";
     
    while ((@row_ent  = $sel_ent->fetchrow_array) and ($CompteurTest > 0)) {
      	print "CLIENT: $row_ent[0] - $row_ent[1] -  $row_ent[2]\n";
      	$CompteurTest--;
    };
     
    # je ferme
    $sel_ent->finish;
    $dbh->disconnect();
    Je l'ai dérivé d'un module qui accède et à accéder à Oracle 8, Oracle 9.

    Cela dit, il y a eu des problèmes avec la version 5.8 de Perl et Oracle:BD, de recompilation mal faite. Normalement 5.8.8 marcherait. Si le code précédent ne marche pas, installes Perl 5.6 , DBI et BDB::Oracle et refait une passe.

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/11/2006, 11h08
  2. [DEBUTANT] Connexion à une base oracle dans eclipse
    Par marwaza22 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/07/2006, 17h25
  3. [Oracle] Problème de connexion à une base Oracle
    Par Gigi31 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2006, 17h49
  4. Réponses: 4
    Dernier message: 24/02/2006, 10h48
  5. Réponses: 4
    Dernier message: 02/01/2006, 16h58

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