Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Maxim                                2:5015/157.2   20 Mar 2003  14:19:25
 To : All
 Subject : - Помогите! Какойто Бермудский треугольник!!!
 -------------------------------------------------------------------------------- 
 
 Приветствую
 У меня какойто шайтан!
 
 есть пакет:
 
 package TDB;
 use vars qw(@ISA @EXPORT);
 require Exporter;
 @ISA='Exporter';
 @EXPORT=qw($dbh dbcon dbinsmak);
 our $VERSION=1.00;
 
 my $dbh;
 use DBI;
 use LogFile # функци log_die() отлажен
 
 sub dbcon
 {
 
 my $pid=shift;
 $dbname='TOPL';
 $user='topl';
 $pass='pass';
 $dbd='Oracle';
 
 $ENV{'ORACLE_HOME'}='/opt/oracle/product/9.0.1';
 $ENV{'NLS_LANG'}='RUSSIAN_CIS.CL8KOI8R';
 $ENV{'ORACLE_SID'}='PRIMA';
 my %attr=(PrintError=>0,RaiseError=>0);
 unless(defined($dbh=DBI->connect('PRIMA',$user,$pass,$dbd,{RaiseError=>0,PrintEr
 ror=>0})))
       
 {_dberr($pid,0,$DBI::err,$DBI::errstr);log_die($pid,1,1,0,"($DBI::err)
 $DBI::errstr\n");}
 return $dbh;
 }
 
 sub dbinsmak
  {
 use POSIX 'strftime';
 
 my ($pid,$dbh,$makdate,$ccode,$cfuel,$inpf,$chargef,$restf,$infpr)=@_;
 my $year=strftime"%Y",gmtime;
 
 my $query="insert into secinfo
 (id_secinfo,makdate,datesys,ccode,cfuel,inpf,chargef,restf,infpr,pid) 
 values
 (seq_secinfo.nextval,to_date('".$makdate.$year."','MM.DD.YYYY'),sysdate,'".$ccod
 e."','".$cfuel."','".$inpf."','".$chargef."','".$restf."','".$infpr."','".$pid."
 ')";
 
 unless(defined($sth=$dbh->do($query)))
   {my $err=$dbh->err;
    my $str=$dbh->errstr;
     unless(defined(my $sth=$dbh->do($sth=$dbh->do(_dberr
 ($pid,4,$err,$str)))))
      {log_die($pid,1,1,3,"(DBERROR) (".$dbh->err().")
 ".$dbh->errstr()."\n");}
   log_die($pid,1,1,5,"(SECINFO) (".$err.") ".$str."\n$query\n");} 
 }
 
 sub _dberr
  {
 ($pid,$errno,$err,$errstr)=@_;
 $str=_clearstr($errstr);
    SWITCH: {
      $msg=$dtime." (DBI: ".$err.") Ошибка сединения с Oracle
 ".$errstr."\n",last SWITCH if $errno==0;
      $msg=$dtime." (DBI: ".$err.") Ошибка закрытия соединения
 ".$errstr."\n",last SWITCH if $errno==1;
      $msg=$dtime." (DBI: ".$err.") Ошибка закрытия дескриптора комманд
 ".$errstr."\n",last SWITCH if $errno==2;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса очистки
 таблицы (secinfo)".$errstr."\n",last SWITCH if $errno==3;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса
 (secinfo)".$errstr."\n",last SWITCH if $errno==4;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса (prbal)
 ".$errstr."\n",last SWITCH if $errno==5;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса (tsmtp)
 ".$errstr."\n",last SWITCH if $errno==6;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса (dberr)
 ".$errstr."\n",last SWITCH if $errno==7;
      $msg=$dtime." (DBI: ".$err.") Ошибка выполнения запроса (makerr)
 ".$errstr."\n",last SWITCH if $errno==8;
   }
 $query="insert into dberr (dbierrcode,dbierrstr,pid,sdate) values
 ('".$err."','".$msg."','".$pid."',sysdate)";
 }
 
 sub _clearstr
  {
    my $d=shift;
    $d=~s/(['"])//g;
    return $d;
  }
 
 Проблема в следующем функция DBINSMAK заносит данные в oracle .. и в
 случае ошибки помимо функций LOG_DIE (логер) .. должно заносится сообщения
 об ошибке в Оракл .. Вот .. Функцяи _DBERR генерит SQL-запрос..
 Я специально заносил неправильный SQL запрос и отрабатывал занесение
 информации об ошибке DBI в базу.. Запись производится вся диагностика
 отрабатывает на Ура .. и говорит шо все впорядке HО в Оракле HЕТ HИЧЕГО!!!
 я уже полтора дня мудохаюсь не могу понять в чем проблема..
 
 ПОМОГИТЕ ... 
 
 дополнительная инфа на мыло или аська 168815113
 
 --- Nizhny Novgorod NNTP-HTTP Gateway
  * Origin: http://newsgate.nnov.ru (2:5015/157.2@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 - Помогите! Какойто Бермудский треугольник!!!   Maxim   20 Mar 2003 14:19:25 
Архивное /ru.perl/5290663284e2.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional