2017-10-06 50 views
1

我編寫了一個perl腳本,它連接到Oracle數據庫並更新數據。 perl腳本和連接到數據庫的執行工作正常。使用perl腳本將日誌導出到Oracle SQL「更新」腳本的文本文件中

但是,我想導出更新數據的日誌到一個臨時文本文件。請提出解決方案。下面是我的代碼,

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(); 

回答

0

我會建議更換

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

通過

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

我已經取代瞭如上建議,除非'($ sth->的execute()){ ' '打開(LOGFILE,'>>','perl.log')或死「無法打開日誌文件\ n」;' '打印LOGFILE $ ora-> errstr;' '關閉LOGFILE;' '死「無法執行聲明n $!「;'但文件沒有被生成。因爲我覺得數據沒有被輸入到文件中。 – Avinash

+0

也許對'$ dbh-> prepare'做同樣的事情 –