## Beispiele für das Modul SAP::DBTech::dbm

Um eine Verbindung aufzubauen, übergeben Sie in den folgenden Beispielen die Argumente jeweils auf der Kommandozeile.

Mit folgendem Kommando rufen Sie das Perl-Skript sample.pl auf und melden sich als DBM-Benutzer OLEG mit Kennwort MONDAY an die Datenbankinstanz DEMODB an.

perl sample.pl OLEG MONDAY DEMODB

### Aufbau einer Verbindung

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Parsen der Aufrufargumente

# --------------------------

my $user_name = $ARGV [0];

my $password = $ARGV [1];

my $database_name = $ARGV [2];

# Aufbau einer Database Manager-Sitzung

# ---------------------------------------

my $session = new DBM ('', $database_name, '', "$user_name,$password");

# Abmelden

# -------------------------------------

$session->release ();

In den folgenden Beispielen wird die Anmeldung jeweils verkürzt angegeben:

session = sapdb.dbm.DBM (’’, $ARGV [2], $ARGV [0] . ’,’ . $ARGV [1])

### Auflisten aller Datenbanken

Mit der Methode cmd können Sie DBM-Kommandos ausführen. Das Ergebnis ist eine Zeichenkette, die mit Perl weiterverarbeitet werden kann.

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Aufbau einer Database Manager-Sitzung

# ------------------------------------------------------

my $session = new DBM ('', $ARGV [2], '', $ARGV [0] . ',' . $ARGV [1]);

# Ausführen des DBM-Kommandos, mit dem alle Datenbankinstanzen

# aufgelistet werden. Das Ergebnis ist eine Zeichenkette.

output = session.cmd ('db_enum')

my $dbstate = 'offline';

my $lastdb = '';

# Einzelne Datenbankinstanzen sind durch Zeilenumbrüche getrennt.

foreach my $line (split /\n/, $output){

# Datenfelder sind durch Tabulatorzeichen getrennt.

my ($name, $instroot, $release, $kind, $state) = split /\t/, $line;

if ($name ne $lastdb) {

# Es existieren mehrere Zeilen pro Datenbankinstanz,

# maximal je eine für die Kernvarianten

# fast und slow.

if ($lastdb ne '') {

print "$lastdb\t$dbstate\n";

}

$lastdb = $name;

$dbstate = 'offline';

}

# Die Datenbank ist aktiv, wenn eine der Kernvarianten

# als 'running' angezeigt wird.

if ($state eq 'running') {

$dbstate = $state;

}

}

print "$lastdb\t$dbstate\n";

$session->release ();

### Behandeln von Fehlersituationen

Wenn innerhalb der Methode cmd ein Fehler auftritt, dann wird eine Ausnahme erzeugt. Diese Ausnahme können Sie durch eval abfangen und mit der Systemvariablen $@ abfragen.

# Verweis auf die Perl-Libraries

# ------------------------------

use SAP::DBTech::dbm;

# Aufbau einer Database Manager-Sitzung

# -----------------------------------------

my $session = new DBM ('', $ARGV [2], '', $ARGV [0] . ',' . $ARGV [1]);

foreach my $cmd (('db_state', 'invalid command')) {

eval {

my $result = $session->cmd ($cmd);

# Ausgabe des Ergebnisses

print "$cmd: OK $result\n";

};

if ($@) {

# Ausgabe der Fehlermeldung

print "$CMD: ERR $@\n";

}

}

$session->release ();