my $conn = DBI->connect("dbi...); sub { my $conn = shift; ... } #### use somepackage; my $conn = somepackage::connectdb(); $conn->{AutoCommit} = 0; ... sub foo { my ($conn, $bar) = @_; my $sth = $conn->prepare(qq{ SELECT COUNT(*) AS MYCOUNT FROM MYTABLE WHERE ID=? }); $sth->execute($bar); my $ref = $sth->fetchrow_hashref(); $sth->finish(); return $ref->{MYCOUNT}; } print &foo($conn, 'some id'); ... $conn->disconnect(); __END__ #### sub connectdb { my $user = 'user'; my $password = 'password'; my $host = 'host'; my $sid = 'SID'; return (DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $password, {PrintError => 1, RaiseError => 1, AutoCommit => 0})); }