如何使用Perl CGI脚本中的数据库服务器?

时间:2008-11-19 06:16:10

标签: database perl cgi

我的程序已经运行,我有Perl(GUI窗口),我可以输入数据,传递到网页的数据(使用到Tomcat服务器,JSP),然后保存它到oracle数据库。我想要的是使用Perl CGI从Oracle数据库中创建检索/提取数据的搜索参数(webapp)。可能吗?或者任何解决我的计划的建议?感谢: - - !)

2 个答案:

答案 0 :(得分:5)

是的,您可以使用DBIDBD::Oracle模块。

然而,Oracle存在一些问题。我记得Oracle 8的一些有趣和游戏因此可能不再适用但它确实需要设置ENV变量,如ORACLE_HOME,ORACLE_BASE&在某些情况下ORACLE_SID。

DBD :: Oracle doc确实进入了这个,并且还提到了另一个ENV变量TWO_TASK。让它发挥作用可能取决于....

  • 您运行的Oracle版本
  • 你是否有听众(我认为你需要像CGI一样进行网络访问?)
  • 您正在使用的SQL * Net版本。

似乎令人生畏,但你可能需要的只是在网络服务器中添加这些ENV变量(iPlanet就是我当时使用的)。或者从DBD :: Oracle doc中提供......

BEGIN {
  $ENV{ORACLE_HOME} = '/home/oracle/product/10.x.x';
  $ENV{TWO_TASK}    = 'DB';
}
$dbh = DBI->connect('dbi:Oracle:','scott', 'tiger');
#  - or -
$dbh = DBI->connect('dbi:Oracle:','scott/tiger');

PS。以上假设您在与Oracle相同的服务器上运行CGI脚本!如果没有,那么这些ENV变量是多余的,你可以这样做(从我的旧脚本中提取出来!)......

my $db = DBI->connect("dbi:Oracle:host=$host;sid=$database", $user, $pass, 
  { RaiseError => 0, PrintError => 0 } )
  or croak( "Unable to connect to DB - $DBI::errstr" );

但是我确实记得要在Oracle服务器上调整类似TNLISTENER.CONF的东西(这是几年前因为内存让我失望了一些!)而且我很确定你需要下载一些客户端Oracle库(你在哪里)可以从他们的网站获得。)

答案 1 :(得分:2)

混合技术的具体原因是什么?为什么不使用servlet / JSP?

如果必须使用Perl,则需要选择运行Perl脚本的Web服务器。

通常,这将是Apache使用mod_perl

但是如果您只打算将其用于一些管理脚本,那么您可以按照here概述从tomcat运行Perl。

一旦你设法运行一个简单的perl脚本,那么我会考虑使用DBI/DBD::Oracle来访问你的数据库吗?

希望这会有所帮助......