2017-10-06 5 views
1

J'ai codé un script perl qui se connecte à la base de données Oracle et met à jour les données. L'exécution du script perl et des connexions à la base de données fonctionne correctement. Mais, je veux exporter les journaux des données mises à jour dans un fichier texte temporaire. S'il vous plaît proposer une solution. Voici mon code,Exporter les journaux dans un fichier texte pour Oracle SQL "mise à jour" script en utilisant le script Perl

use strict; 
use DBD::Oracle; 
use DBI; 

my $driver = "Oracle"; 
my $database = "host=xxxxx;port=xxx;sid=xxxx"; 
my $dsn = "DBI:$driver:$database"; 
my $userid = "xxxxxx"; 
my $password = "xxxxx"; 

# Database Connection 
my $dbh = DBI->connect($dsn, $userid, $password,{RaiseError => 1}) or die "Can't connect to the Database: $DBI::errstr"; 
my $sth = $dbh->prepare("UPDATE XXXX SET ABCD=1233 WHERE LOGIN BETWEEN SYSDATE-24*30 and SYSDATE-12*30") or die "$DBI::errstr"; 

$sth->execute() or die "couldn't execute statementn$!"; 
$sth->rows; 

# End of Program 
$sth->finish(); 
$dbh->disconnect(); 

Répondre

0

Je propose de remplacer

$sth->execute() or die "couldn't execute statementn$!"; 

par

unless ($sth->execute()) { 
    open LOGFILE, ">>", /tmp/logs/perl.log or die "Could not open logfile\n";    
    print LOGFILE $ora->errstr; 
    close LOGFILE; 
    die "couldn't execute statementn$!"; 
} 
+0

J'ai remplacé comme suggéré ci-dessus, 'moins ($ sth-> execute()) { ' ' ouvrir (LOGFILE, '>>', 'perl.log') ou mourir "Impossible d'ouvrir le fichier journal \ n"; ' ' print LOGFILE $ ora-> errstr; ' ' fermer LOGFILE; ' ' die "Impossible d'exécuter la déclaration n $! ";' mais le fichier n'est pas généré. Comme je me sentais comme les données ne sont pas introduites dans le fichier. – Avinash

+0

Peut-être faire la même chose pour '$ dbh-> prepare' –