Невозможно выполнить инструкцию обновления оракула в Perl - PullRequest
0 голосов
/ 20 марта 2012

У меня проблема в сценарии perl, который я пишу.Когда я запускаю скрипт, он зависает после prepare ().Я попытался запустить оператор обновления из SQL Developer, и он отлично работает.

Я также попытался распечатать все параметры, и они верны.

Что мне здесь не хватает?

my $upd = 'update ngs.pp_subscr_data set address=?, city=?, postalcode=?, kennitala=?, email=?, firstname=?, lastname=?, last_upd=systimestamp where snb=?';
my $s = $dbh->prepare ($upd) || exitError(-9802, 'Couldn\'t prepare update statement.');
$s->execute($addr, $city, $pcode, $ktala, $email, $fname, $lname, $snb) || exitError(-9803, 'Couldn\'t execute statement: ' . $s->errstr);

Спасибо.

1 Ответ

0 голосов
/ 20 марта 2012

Во-первых, какая версия Oracle?

Хорошо, я вижу пару проблем с вашим описанием. Когда вы говорите «повесить», это действительно зависание? Может ли это вращаться?

Кроме того, во-вторых, вы говорите "... он зависает после prepare ()". Означает ли это, что он зависает после вызова метода prepare () или после возврата из prepare ()?

Он висит в базе данных, и ваша клиентская программа ожидает завершения вызова базы данных?

Вам нужно запустить программу, затем посмотреть на V $ SESSION, определить SID, соответствующий сеансу базы данных вашей программы, и посмотреть, что он делает. Посмотрите на столбец СОБЫТИЕ в V $ SESSION. Кроме того, посмотрите на столбец STATUS, чтобы узнать, находится ли сеанс в данный момент в вызове базы данных (ACTIVE) или ожидает, пока клиентская программа вызовет базу данных (INACTIVE).

Сообщите некоторую информацию обратно, и я смогу предоставить дополнительную информацию.

Надеюсь, это поможет.

...