Я запускаю эту подпрограмму из основного скрипта.

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)}, он печатает первую строку с входным параметром. Но процедура не выполняется.

0
GSG 9 Май 2016 в 14:46

2 ответа

Лучший ответ

Как упомянул пользователь @choroba в комментариях выше, лучший способ, IMHO, - это использовать модуль Perl DBI.

Вот пример вызова хранимой процедуры, которая будет работать с Oracle:

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

А вот ссылка, которая поможет вам начать работу с модулем DBI:

Perl DBI

HTH

0
tale852150 9 Май 2016 в 14:28

Для меня работает это решение хорошо:

my $execute=q~BEGIN your_procedure; END~;
my $sth= $dbh->prepare($execute);
   $sth->execute()
0
ChrisKee 12 Май 2016 в 11:32