|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5290663284e2.html, оценка из 5, голосов 10
|