Home > Archive > Oracle PERL DBD > January 2006 > [svn:dbd-oracle] r2422 - dbd-oracle/trunk









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author [svn:dbd-oracle] r2422 - dbd-oracle/trunk
timbo@cvs.perl.org

2006-01-16, 8:25 pm

Author: timbo
Date: Mon Jan 16 15:05:06 2006
New Revision: 2422

Modified:
dbd-oracle/trunk/Changes
dbd-oracle/trunk/Oracle.pm
Log:
Added INSTANCE_NAME, SERVER and SERVICE_NAME as valid connect keywords
in the 'dbi:Oracle:x=y' short form of connecting without tnsnames.ora.
For example 'dbi:Oracle:host=loc
alhost;service_name=
xe;server=dedicated'



Modified: dbd-oracle/trunk/Changes
====================
====================
====================
==================
--- dbd-oracle/trunk/Changes (original)
+++ dbd-oracle/trunk/Changes Mon Jan 16 15:05:06 2006
@@ -9,6 +9,9 @@
Added support for nested cursors in select lists thanks to Charles Jardine.
Added "Trailing Spaces" section to docs thanks to Michael A Chase.
Added support for binary floats/doubles thanks to Dennis Box.
+ Added INSTANCE_NAME, SERVER and SERVICE_NAME as valid connect keywords
+ in the 'dbi:Oracle:x=y' short form of connecting without tnsnames.ora.
+ For example 'dbi:Oracle:host=loc
alhost;service_name=
xe;server=dedicated'


Changed "Binding Cursors" docs, clarifying examples thanks to Charles Jardine.
Changed tests to use ORACLE_DSN or DBI_DSN env vars if defined thanks to Jill Vogel.

Modified: dbd-oracle/trunk/Oracle.pm
====================
====================
====================
==================
--- dbd-oracle/trunk/Oracle.pm (original)
+++ dbd-oracle/trunk/Oracle.pm Mon Jan 16 15:05:06 2006
@@ -174,22 +174,27 @@ my $ORACLE_ENV = ($^O eq 'VMS') ? 'ORA_
(uc($n), $v)
} split /\s*;\s*/, $dbname;
my %dbname = ( PROTOCOL => 'tcp', @dbname );
- my $sid = delete $dbname{SID};
+
+ # extract main attributes for connect_data portion
+ my @connect_data_attr = qw(SID INSTANCE_NAME SERVER SERVICE_NAME);
+ my %connect_data = map { ($_ => delete $dbname{$_}) }
+ grep { exists $dbname{$_} } @connect_data_attr;
+ my $connect_data = join "", map { "($_=$connect_data{$_})" } keys %connect_data;
+
return $drh->DBI::set_err(-1,
- "Can't connect using this syntax without specifying a " .
- "HOST and a SID")
- unless $sid and $dbname{HOST};
- my @addrs;
- push @addrs, "$n=$v" while ( ($n,$v) = each %dbname );
- my $addrs = "(" . join(")(", @addrs) . ")";
+ "Can't connect using this syntax without specifying a HOST and one of @connect_data_attr")
+ unless $dbname{HOST} and %connect_data;
+
+ my @addrs = map { "($_=$dbname{$_})" } keys %dbname;
+ my $addrs = join "", @addrs;
if ($dbname{PORT}) {
$addrs = "(ADDRESS=$addrs)";
}
else {
- $addrs = " (ADDRESS_LIST=(ADDRE
SS=$addrs(PORT=1526)
)" # Oracle8+
- . " (ADDRESS=$addrs(PORT
=1521)))"; # Oracle7
+ $addrs = " (ADDRESS_LIST=(ADDRE
SS=$addrs(PORT=1526)
)"
+ . " (ADDRESS=$addrs(PORT
=1521)))";
}
- $dbname = " (DESCRIPTION=$addrs(
CONNECT_DATA=(SID=$s
id)))";
+ $dbname = " (DESCRIPTION=$addrs(
CONNECT_DATA=$connec
t_data))";
$drh->trace_msg("connect using '$dbname'");
}

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com