从perl调用存储过程

时间:2016-05-09 11:46:02

标签: perl plsql

我正在从主脚本运行这个子程序。

print "parameter passed: $_[0]";
my $connect_string = 'test/test@testdb';
my $sqlplus_settings = '';
my $task = '';
my $result = qx { sqlplus $connect_string << EOF
$sqlplus_settings exec {pkgname.procedure($_[0], 'abc',$task);
#exit;
EOF

当从主脚本{sub($var)}调用它时,它将使用输入参数打印第一行。但程序没有得到执行。

2 个答案:

答案 0 :(得分:0)

正如用户@choroba在上面的评论中提到的,恕我直言的最佳方式是使用Perl的DBI模块。

以下是调用可与Oracle一起使用的存储过程的示例:

$dbh->do("BEGIN your_procedure; END;");

这是一个帮助您开始使用DBI模块的链接:

Perl DBI

HTH

答案 1 :(得分:0)

对我来说这个解决方案很好:

my $execute=q~BEGIN your_procedure; END~;
my $sth= $dbh->prepare($execute);
   $sth->execute()