Perl DBI::Oracle 出现问题的解决方法
just
posted @ 2008年12月20日 20:37
in 脚本
, 4742 阅读
环境:winXP ActivePerl 5.8.8 Build 819 Oracle9
今天想用perl连接公司的一台Oracle数据库,但是perl要安装DBD::Oracle模块:
ppm install DBD-ORACLE
本以为装完就OK,可是运行如下perl程序出现问题:
一下是代码:
use DBI;
$dbname="XXTDB_11";
$user="xxt_mt";
$passwd="mt#456";
$dbh="";
#连接数据库
$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect to
database ". DBI-errstr;
#执行sql语句
$sth=$dbh->prepare("Select * from xxt_prod.kiosk t ");
$sth->execute;
#读取记录数据
while (@recs=$sth->fetchrow_array) {
print $recs[0].":".$recs[1].":".$recs[2]."\n";
}
$dbh->disconnect;
$dbname="XXTDB_11";
$user="xxt_mt";
$passwd="mt#456";
$dbh="";
#连接数据库
$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect to
database ". DBI-errstr;
#执行sql语句
$sth=$dbh->prepare("Select * from xxt_prod.kiosk t ");
$sth->execute;
#读取记录数据
while (@recs=$sth->fetchrow_array) {
print $recs[0].":".$recs[1].":".$recs[2]."\n";
}
$dbh->disconnect;
错误提示:
error "ORA-12705: Cannot access NLS data files or invalid environment specified"
最后在这里找到了答案:http://blog.xuite.net/yukai/klovek/7946037
如果在同一台电脑上已经先安装了标准的 Oracle Database Client,就会出现这个错误信息,解決方法:打开注册表 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 內找出 NLS_LANG ,这个键值现在应该是 NA,也是导致 ORA-12705 错误的原因,因此將 NLS_LANG 的值改为AMERICAN_AMERICA.ZHS16GBK 就可以正常使用了。