powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl Oracle метод prepare
2 сообщений из 2, страница 1 из 1
ActivePerl Oracle метод prepare
    #38083948
ssswin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, господа.
Есть такой код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
use DBI;
...
  $dbh = DBI ->connect("dbi:Oracle:host=$orahost;SERVICE_NAME=$oraservisename;port=$oraport",$orauser,$orapass) or die ("  $DBI::errstr");
  $dbh->{AutoCommit}    = 0;
  $dbh->{RaiseError}    = 1;
  $dbh->{ora_check_sql} = 0;
  $dbh->{RowCacheSize}  = 16;

...
  $sth = $dbh->prepare( "select * from t") or die ("$DBI::errstr");
  $sth->execute() or die($sth->errstr);
...



При возникновении ошибки в запросе (например таблицы t не существует) - ошибка не обрабатывается, скрипт вылетает по exception из винды. При указании $DBI->trace(4) ошибка вылетатет в лог, но скрипт все равно вываливается.

Как корректно обрабытывать ошибки в запросе?
...
Рейтинг: 0 / 0
ActivePerl Oracle метод prepare
    #38084406
scrip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) При RaiseError=1 не будет выполняться 'or die' , это видимо у вас копипейст бессмысленный и беспощадный.

2) Если не любите исключения, то отключите RaiseError и делайте в проверке кода возврата что-то иное, вместо 'die'

3) Если хотите ловить исключения, то прочитайте про eval. Примеры есть в документации на DBI.

4) Также есть модули для упрощения обработки исключений, например Try::Tiny
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ActivePerl Oracle метод prepare
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]