Я запускаю эту подпрограмму из основного скрипта.
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 ответа
Как упомянул пользователь @choroba в комментариях выше, лучший способ, IMHO, - это использовать модуль Perl DBI.
Вот пример вызова хранимой процедуры, которая будет работать с Oracle:
$dbh->do("BEGIN your_procedure; END;");
А вот ссылка, которая поможет вам начать работу с модулем DBI:
HTH
Для меня работает это решение хорошо:
my $execute=q~BEGIN your_procedure; END~;
my $sth= $dbh->prepare($execute);
$sth->execute()
Похожие вопросы
Новые вопросы
perl
Perl - это процедурный высокоуровневый динамический язык программирования общего назначения, известный своей собственной поддержкой регулярных выражений и возможностей синтаксического анализа строк. Пожалуйста, используйте этот тег для вопросов о Perl в целом. Для вещей, связанных с новым (но связанным) языком Raku (ранее «Perl 6»), используйте тег raku. Для регулярных выражений в стиле Perl на других языках используйте тег regex или, если они основаны на библиотеке PCRE, тег pcre.