通过DBI获取所有Oracle数据源的列表

时间:2012-08-20 17:18:18

标签: perl oracle dbi

我正在创建一个perl程序,除了用户名和密码之外,用户还必须输入数据库的名称,程序使用DBI->connect连接到该数据库。我想要做的是让程序显示它可以连接到的数据库的名称列表,并且用户所要做的就是输入他们的用户名和密码,以便于使用。我查看了DBI documentation数据源,认为这是我需要的,但是当我调用DBI->data_sources('Oracle')时,它不返回任何内容(但也没有遇到任何错误)。我不知道如何发生这种情况,因为如果用户提供数据库名称,程序可以毫无阻碍地连接。有什么东西我做错了,还是我没有得到的东西?

是的,我意识到我可以手动打开tnsnames.ora文件并解析它。事实上,这就是我先做的,但我最好使用DBI。

1 个答案:

答案 0 :(得分:2)

试试这个:

#!/usr/bin/perl -w

use DBI;

my @drivers = DBI->available_drivers();

die "No drivers found!\n" unless @drivers; # should never happen

foreach my $driver ( @drivers ) {
    print "Driver: $driver\n";
    my @dataSources = DBI->data_sources( $driver );
    foreach my $dataSource ( @dataSources ) {
        print "\tData Source is $dataSource\n";
    }
    print "\n";
}