Alex: DBi und DBD-Oracle

Hallo,

Ich möchte mit Perl eine Verbindung zu einer Oracle Datenbank herstellen.
Wo bekomme ich für Win XP die beiden Module bzw. Repositories DBi und DBD-Oracle her und wie installier ich sie ??

Danke und guten Rutsch

Alex

  1. Hallo,

    Ich möchte mit Perl eine Verbindung zu einer Oracle Datenbank herstellen.
    Wo bekomme ich für Win XP die beiden Module bzw. Repositories DBi und DBD-Oracle her und wie installier ich sie ??

    guck mal hier ist der Einstieg:
    http://i-netlab.de/cgi-bin/index.cgi?vi=DBI_PERL

    CPAN hier:
    http://theoryx5.uwinnipeg.ca/CPAN/cpan-search.html

    PPM Module da:
    http://www.activestate.com/PPMPackages/zips/

    Viel Spass damit, Erwin

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. Ok,

      Perlskript erstellt, Verbindung zur Datenbank aufgenommen und neue Tabelle angelegt!

      ich kann jedoch immer nur einen Record einfügen!
      z.B.:
      my $Q = "INSERT INTO names VALUES('1', 'Meier', 'Franz')";
      my $sth = $dbh->prepare($Q);

      Wenn ich mehrere Records untereinander in das Skript einfüge, um die Tabelle zu füllen, wird in der Tabelle einfach nur die erste Zeile überschrieben!!!

      Muss ich nach jedem neuen Zeileneintrag explizit die Zeile wechsel ??
      Wenn ja, mit welchem Befehl?

      Merci

      Alex

      1. Hallo,

        Wenn ich mehrere Records untereinander in das Skript einfüge, um die Tabelle zu füllen, wird in der Tabelle einfach nur die erste Zeile überschrieben!!!

        Hast Du auch immer brav mit Transaktionen gearbeitet?

        Muss ich nach jedem neuen Zeileneintrag explizit die Zeile wechsel ??

        Es gibt bei Datenbanken keine Zeilen, geschweige denn der Möglichkeit diese zu wechseln.

        Ich verwende üblicherweise folgendes 'Grundgerüst' (naja mehr oder weniger *g*):

        my ($field1,$field2,$field3);

        my $dbh = DBI->connect('dbi:Oracle:host=somehost;sid=MYSID', 'user', '$pwd',
                            { RaiseError => 1, AutoCommit => 0 })
               or die 'unable to connect database: '.$DBI::errstr ;

        AutoCommit ist bei mir immer abgeschaltet

        my $sth = $dbh->prepare('INSERT INTO table (field1, field2, field3) VALUES (?, ?, ?)') or die 'unable to prepare statement'.$dbh->errstr;

        ich verwende immer Bindvariablen, die Platzhalter sind hier '?'

        my ($field1,$field2,$field3);
        while(($field1,$field2,$field3) = getmyinsertdata())
          {
          # execute führt das mit prepare vorbereitet Statement mit den aktuellen Werten von $field1,$field2 und $field3 aus
          $sth->execute($field1,$field2,$field3) or die $dbh->errstr;
          }
        $dbh->commit or die $dbh->errstr;

        nur wenn alles gut gegangen ist, wird ein COMMIT ausgeführt.

        $dbh->disconnect or die $dbh->errstr;

        Näheres dazu findest Du unter
        http://search.cpan.org/~timb/DBI-1.39/DBI.pm
        bzw.
        http://search.cpan.org/~timb/DBD-Oracle-1.14/Oracle.pm.

        Oder noch besser in der Perldokumentation auf Deinem Rechner.

        Grüße
          Klaus