Многооператорная обработка в Oracle через Perl DBI

Есть ли способ сделать что-то подобное с помощью Oracle/DBI/Perl.

use DBI;
my $dbh = DBI->connect( oracle_stuff );
my $sql = <<EOF;
select current_timestamp(3) from dual;
select current_timestamp(3) from dual;
EOF
my $sth  = $dbh->prepare($sql);
print $sth->execute();

Очевидно, я хочу обработать что-то намного большее, чем просто 2 x current_datetimes, но это мой тривиальный пример. Я продолжаю получать сообщение об ошибке: команда SQL неправильно завершена :-(


person Richard Green    schedule 13.08.2012    source источник
comment
не думаю, что это возможно. но зачем тебе это нужно? нельзя ли это сделать отдельными операторами?   -  person tuxuday    schedule 13.08.2012
comment
связанные: stackoverflow.com/a/5604057   -  person daxim    schedule 13.08.2012
comment
Я переношу большое количество кода из sybase -> oracle... Я действительно хотел бы иметь возможность сохранить большую часть SQL как можно ближе к оригиналу. Мой пример немного вводит в заблуждение ... это не просто выполнение одной и той же команды несколько раз, но одна команда может быть вставкой, следующая - удалением и т. д. и т. д. ...   -  person Richard Green    schedule 13.08.2012


Ответы (1)


оператор подготовки ожидает '?' например, предложите документ пакета DBI здесь http://search.cpan.org/dist/DBI/DBI.pm

Например :

$sth = $dbh->prepare('select current_timestamp(?) from dual')
$sth->execute(3);
$sth->execute(4);
$sth->execute(5);

и т.д...

person Community    schedule 13.08.2012
comment
Да... но я не хочу запускать один и тот же код снова и снова - команды совершенно разные - т.е. одна вставка, одна удаление, другая вставка и т.д. и т.п. - person Richard Green; 13.08.2012
comment
если утверждения не связаны между собой, то нет причин группировать их вместе как единое целое; если они связаны, то они (как) одна транзакция; установите для автофиксации значение false и выполните фиксацию после последнего оператора (и откат в случае сбоя). - person pavel; 13.08.2012
comment
@richardgreen в этом случае похоже, что ссылка на даксим в порядке https://metacpan.org/module/SQL::SplitStatement - person ; 13.08.2012