DBI and modules
From: Simon Taylor (set_at_nortelnetworks.com)
Date: 10/17/03
- Next message: Paul Dubois: "Re: mysql server 4.1"
- Previous message: Phani: "mysql server 4.1"
- Next in thread: Doug Silver: "Re: DBI and modules"
- Reply: Doug Silver: "Re: DBI and modules"
- Reply: Thomas A. Lowery: "Re: DBI and modules"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
To: "'dbi-users@perl.org'" <dbi-users@perl.org> Date: Fri, 17 Oct 2003 16:22:24 +0100
I am trying to create a module that sets ups environment variables from
another module, creates a database handle and passes it back to the calling
script.
I understand that an object exists as long as there is a reference to it but
cant quite see why this code generates the following errors when it tries to
destroy the dbh even though it is always an object in the hash? No doubt I
am confused about a fundamental here.
Issuing rollback() for database handle being DESTROY'd without explicit
disconnect() at ./poe_ctrl.pl line 38.
$VAR1 = bless( {
'_dbh' => bless( {}, 'DBI::db' )
}, 'SDU::DB' );
Issuing rollback() for database handle being DESTROY'd without explicit
disconnect().
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------------------
Script to create the connection poe_ctrl.pl
use warnings;
use strict;
use Data::Dumper;
use POE qw(Wheel::Run Filter::Reference);
use SDU::CommandIterator;
use SDU::DB;
use SDU::Config;
sub MAX_CONCURRENT_TASKS () { 5 }
# Create database connection
my $dbh = SDU::DB->new;
print Dumper($dbh);
exit;
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------------
Package to create the connection
package SDU::DB;
require 5.008 ;
use SDU::Config;
use strict;
use Carp;
use Carp qw(cluck);
use DBI;
use DBI qw(:sql_types);
use DBD::Oracle;
use DBD::Oracle qw(:ora_types);
use TNBException;
sub new {
my $class = shift;
my $SC = SDU::Config->new;
my $DB = { _dbh => &ConnectToOracle($SC)
};
my $DC = &ConnectToOracle($SC);
my $self = bless $DB, $class;
return $self;
}
sub ConnectToOracle{
my ($SC) = @_;
$ENV{ORACLE_HOME}=$SC->{ORA_HOME};
$ENV{TWO_TASK}=$SC->{ORA_SID};
$ENV{ORACLE_SID}=$SC->{ORA_SID};
my $combined=$SC->{ORA_USER}."@".$SC->{ORA_SID};
my $trace_level=0;
my $dbh = undef;
$dbh = DBI->connect('dbi:Oracle:',$combined , $SC->{ORA_PASS}) or throw
TNBCriticalException($dbh->errstr);
$dbh->func( 1000000, 'dbms_output_enable' );
$dbh->{RaiseError} = 1;
$dbh->{PrintError} = 0;
$dbh->{AutoCommit} = 0;
$dbh->trace($trace_level);
return $dbh;
}
1;
Simon Taylor
Managed Services Technology Consultant
Nortel Networks
p - 01279 404289 (ESN 742 4289)
m - 07740 533743 (ESN 748 3743)
e - set@nortelnetworks.com
"I code therefore I am"
- Next message: Paul Dubois: "Re: mysql server 4.1"
- Previous message: Phani: "mysql server 4.1"
- Next in thread: Doug Silver: "Re: DBI and modules"
- Reply: Doug Silver: "Re: DBI and modules"
- Reply: Thomas A. Lowery: "Re: DBI and modules"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|