[svn:dbd-oracle] r13717 - in dbd-oracle/branches/DBDOracle8: . blib/arch/auto/DBD/Oracle8 blib/lib t

[email protected]
Newsgroups perl.dbd.oracle.changes
Message-ID <[email protected]>
Author: byterock
Date: Thu Jan  7 18:12:21 2010
New Revision: 13717

Added:
   dbd-oracle/branches/DBDOracle8/Oraperl.pm
Modified:
   dbd-oracle/branches/DBDOracle8/Makefile
   dbd-oracle/branches/DBDOracle8/Oracle.obj
   dbd-oracle/branches/DBDOracle8/blib/arch/auto/DBD/Oracle8/mk.pm
   dbd-oracle/branches/DBDOracle8/blib/lib/Oraperl.pm
   dbd-oracle/branches/DBDOracle8/dbdimp.obj
   dbd-oracle/branches/DBDOracle8/mk.pm
   dbd-oracle/branches/DBDOracle8/oci8.obj
   dbd-oracle/branches/DBDOracle8/sqlnet.log
   dbd-oracle/branches/DBDOracle8/t/10general.t
   dbd-oracle/branches/DBDOracle8/t/20select.t
   dbd-oracle/branches/DBDOracle8/t/21nchar.t
   dbd-oracle/branches/DBDOracle8/t/22nchar_al32utf8.t
   dbd-oracle/branches/DBDOracle8/t/22nchar_utf8.t
   dbd-oracle/branches/DBDOracle8/t/23wide_db.t
   dbd-oracle/branches/DBDOracle8/t/23wide_db_8bit.t
   dbd-oracle/branches/DBDOracle8/t/23wide_db_al32utf8.t
   dbd-oracle/branches/DBDOracle8/t/24implicit_utf8.t
   dbd-oracle/branches/DBDOracle8/t/25plsql.t
   dbd-oracle/branches/DBDOracle8/t/30long.t
   dbd-oracle/branches/DBDOracle8/t/40ph_type.t
   dbd-oracle/branches/DBDOracle8/t/50cursor.t
   dbd-oracle/branches/DBDOracle8/t/55nested.t
   dbd-oracle/branches/DBDOracle8/t/nchar_test_lib.pl
   dbd-oracle/branches/DBDOracle8/vc70.pdb

Log:
this should be working

Modified: dbd-oracle/branches/DBDOracle8/Makefile
==============================================================================
--- dbd-oracle/branches/DBDOracle8/Makefile	(original)
+++ dbd-oracle/branches/DBDOracle8/Makefile	Thu Jan  7 18:12:21 2010
@@ -21,7 +21,7 @@
 #     OBJECT => q[$(O_FILES)]
 #     PREREQ_PM => { DBI=>q[0] }
 #     VERSION_FROM => q[Oracle8.pm]
-#     clean => { FILES=>q[xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }
+#     clean => { FILES=>q[xstmp.c Oracle8.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }
 #     dist => { DIST_DEFAULT=>q[clean distcheck disttest tardist], COMPRESS=>q[gzip -v9], PREOP=>q[$(MAKE) -f Makefile.old distdir], SUFFIX=>q[gz] }
 
 # --- MakeMaker post_initialize section:
@@ -611,9 +611,9 @@
 	  perl.exe so_locations \
 	  $(BASEEXT).exp Oracle8.c 
 	- $(RM_RF) \
-	  *.pdb ora_explain \
-	  dll.base DBD_ORA_OBJ.* \
-	  Oracle.xsi dll.exp \
+	  *.pdb Oracle8.xsi \
+	  ora_explain dll.base \
+	  DBD_ORA_OBJ.* dll.exp \
 	  libOracle.def sqlnet.log \
 	  blib mk.pm \
 	  xstmp.c 

Modified: dbd-oracle/branches/DBDOracle8/Oracle.obj
==============================================================================
Binary files. No diff available.

Added: dbd-oracle/branches/DBDOracle8/Oraperl.pm
==============================================================================
--- (empty file)
+++ dbd-oracle/branches/DBDOracle8/Oraperl.pm	Thu Jan  7 18:12:21 2010
@@ -0,0 +1,875 @@
+# Oraperl Emulation Interface for Perl 5 DBD::Oracle8 DBI
+#
+# Oraperl.pm
+#
+#   Copyright (c) 1994,1995 Tim Bunce
+#
+#   See the COPYRIGHT section in the Oracle.pm file for terms.
+#
+# To use this interface use one of the following invocations:
+#
+#       use Oraperl;
+# or
+#       eval 'use Oraperl; 1;' || die $@ if $] >= 5;
+#
+# The second form allows oraperl scripts to be used with
+# both oraperl and perl 5.
+
+package Oraperl;
+
+require 5.004;
+
+use DBI 1.21;
+use Exporter;
+
+$VERSION = substr(q$Revision: 1.44 $, 10);
+
+@ISA = qw(Exporter);
+
+@EXPORT = qw(
+    &ora_login &ora_open &ora_bind &ora_fetch &ora_close
+    &ora_logoff &ora_do &ora_titles &ora_lengths &ora_types
+    &ora_commit &ora_rollback &ora_autocommit &ora_version
+    &ora_readblob
+    $ora_cache $ora_long $ora_trunc $ora_errno $ora_errstr
+    $ora_verno $ora_debug
+);
+
+$debug    = 0 unless defined $debug;
+$debugdbi = 0;
+# $safe		# set true/false before 'use Oraperl' if needed.
+$safe = 1 unless defined $safe;
+
+# Help those who get core dumps from non-'safe' Oraperl (bad cursors)
+use sigtrap qw(ILL);
+if (!$safe) {
+    $SIG{BUS} = $SIG{SEGV} = sub {
+	print STDERR "Add BEGIN { \$Oraperl::safe=1 } above 'use Oraperl'.\n"
+		unless $safe;
+	goto &sigtrap::trap;
+    };
+}
+
+
+# Install Driver (use of install_driver is a special case here)
+$drh = DBI->install_driver('Oracle8');
+if ($drh) {
+    print "DBD::Oracle8 driver installed as $drh\n" if $debug;
+    $drh->trace($debug);
+    $drh->{CompatMode} = 1;
+    $drh->{Warn}       = 0;
+}
+
+
+use strict;
+
+sub _func_ref {
+    my $name = shift;
+    my $pkg = ($Oraperl::safe) ? "DBI" : "DBD::Oracle8";
+    \&{"${pkg}::$name"};
+}
+
+sub _warn {
+    my $prev_warn = shift;
+    if ($_[0] =~ /^(Bad|Duplicate) free/) {
+	return unless $ENV{PERL_DBD_DUMP} eq 'dump';
+	print STDERR "Aborting with a core dump for diagnostics (PERL_DBD_DUMP)\n";
+	CORE::dump;
+    }
+    $prev_warn ? &$prev_warn(@_) : warn @_;
+}
+
+
+#	-----------------------------------------------------------------
+#
+#	$lda = &ora_login($system_id, $name, $password)
+#	&ora_logoff($lda)
+
+sub ora_login {
+    my($system_id, $name, $password) = @_;
+    local($Oraperl::prev_warn) = $SIG{'__WARN__'} || 0; # must be local
+    local($SIG{'__WARN__'}) = sub { _warn($Oraperl::prev_warn, @_) };
+    return DBI->connect("dbi:Oracle:$system_id", $name, $password, {
+	PrintError => 0, AutoCommit => 0
+    });
+}
+sub ora_logoff {
+    my($dbh) = @_;
+    return if !$dbh;
+    local($Oraperl::prev_warn) = $SIG{'__WARN__'} || 0; # must be local
+    local($SIG{'__WARN__'}) = sub { _warn($Oraperl::prev_warn, @_) };
+    $dbh->disconnect();
+}
+
+
+
+# -----------------------------------------------------------------
+#
+#   $csr = &ora_open($lda, $stmt [, $cache])
+#   &ora_bind($csr, $var, ...)
+#   &ora_fetch($csr [, $trunc])
+#   &ora_do($lda, $stmt)
+#   &ora_close($csr)
+
+sub ora_open {
+    my($lda, $stmt) = @_;
+    $Oraperl::ora_cache_o = $_[2];	# temp hack to pass cache through
+
+    my $csr = $lda->prepare($stmt) or return undef;
+
+    # only execute here if no bind vars specified
+    $csr->execute or return undef unless $csr->{NUM_OF_PARAMS};
+
+    $csr;
+}
+
+*ora_bind  = _func_ref('st::execute');
+*ora_fetch = \&{"DBD::Oracle8::st::ora_fetch"};
+*ora_close = _func_ref('st::finish');
+
+sub ora_do {
+    # error => undef
+    # 0     => "0E0"	(0 but true)
+    # >0    => >0
+    my($lda, $stmt, @params) = @_;	# @params are an extension to the original Oraperl.
+
+    return $lda->do($stmt, undef, @params);	# SEE DEFAULT METHOD IN DBI.pm
+
+    # OLD CODE:
+    # $csr is local, cursor will be closed on exit
+    my $csr = $lda->prepare($stmt) or return undef;
+    # Oracle OCI will automatically execute DDL statements in prepare()!
+    # We must be carefull not to execute them again! This needs careful
+    # examination and thought.
+    # Perhaps oracle is smart enough not to execute them again?
+    my $ret = $csr->execute(@params);
+    my $rows = $csr->rows;
+    ($rows == 0) ? "0E0" : $rows;
+}
+
+
+# -----------------------------------------------------------------
+#
+#   &ora_titles($csr [, $truncate])
+#   &ora_lengths($csr)
+#   &ora_types($csr)
+
+sub ora_titles{
+    my($csr, $trunc) = @_;
+    warn "ora_titles: truncate option not implemented" if $trunc;
+    @{$csr->{'NAME'}};
+}
+sub ora_lengths{
+    @{shift->{'ora_lengths'}}		# oracle specific
+}
+sub ora_types{
+    @{shift->{'ora_types'}}		# oracle specific
+}
+
+
+# -----------------------------------------------------------------
+#
+#   &ora_commit($lda)
+#   &ora_rollback($lda)
+#   &ora_autocommit($lda, $on_off)
+#   &ora_version
+
+*ora_commit   = _func_ref('db::commit');
+*ora_rollback = _func_ref('db::rollback');
+
+sub ora_autocommit {
+    my($lda, $mode) = @_;
+    $lda->{AutoCommit} = $mode;
+    "0E0";
+}
+sub ora_version {
+    my($sw)  = DBI->internal;
+    print "\n";
+    print "Oraperl emulation interface version $Oraperl::VERSION\n";
+    print "$Oraperl::drh->{Attribution}\n";
+    print "$sw->{Attribution}\n\n";
+}
+
+
+# -----------------------------------------------------------------
+#
+#   $ora_errno
+#   $ora_errstr
+*Oraperl::ora_errno  = \$DBI::err;
+*Oraperl::ora_errstr = \$DBI::errstr;
+
+
+# -----------------------------------------------------------------
+#
+#   $ora_verno
+#   $ora_debug    not supported, use $h->debug(2) where $h is $lda or $csr
+#   $ora_cache    not supported
+#   $ora_long     used at ora_open()
+#   $ora_trunc    used at ora_open()
+
+$Oraperl::ora_verno = '3.000';	# to distinguish it from oraperl 2.4
+
+# ora_long is left unset so that the DBI $h->{LongReadLen} attrib will be used
+# by default. If ora_long is set then LongReadLen will be ignored (sadly) but
+# that behaviour may change later to only apply to oraperl mode handles.
+#$Oraperl::ora_long  = 80;	# 80, oraperl default
+$Oraperl::ora_trunc = 0; 	# long trunc is error, oraperl default
+
+
+# -----------------------------------------------------------------
+#
+# Non-oraperl extensions added here to make it easy to still run
+# script using oraperl (by avoiding $csr->blob_read(...))
+
+*ora_readblob = _func_ref('st::blob_read');
+
+
+1;
+__END__
+
+=head1 NAME
+
+Oraperl - Perl access to Oracle databases for old oraperl scripts
+
+=head1 SYNOPSIS
+
+  eval 'use Oraperl; 1;' || die $@ if $] >= 5;  # ADD THIS LINE TO OLD SCRIPTS
+
+  $lda = &ora_login($system_id, $name, $password)
+  $csr = &ora_open($lda, $stmt [, $cache])
+  &ora_bind($csr, $var, ...)
+  &ora_fetch($csr [, $trunc])
+  &ora_close($csr)
+  &ora_logoff($lda)
+
+  &ora_do($lda, $stmt)
+
+  &ora_titles($csr)
+  &ora_lengths($csr)
+  &ora_types($csr)
+  &ora_commit($lda)
+  &ora_rollback($lda)
+  &ora_autocommit($lda, $on_off)
+  &ora_version()
+
+  $ora_cache
+  $ora_long
+  $ora_trunc
+  $ora_errno
+  $ora_errstr
+  $ora_verno
+
+  $ora_debug
+
+=head1 DESCRIPTION
+
+Oraperl is an extension to Perl which allows access to Oracle databases.
+
+The original oraperl was a Perl 4 binary with Oracle OCI compiled into it.
+The Perl 5 Oraperl module described here is distributed with L<DBD::Oracle>
+(a database driver what operates within L<DBI>) and adds an extra layer over
+L<DBI> method calls.
+The Oraperl module should only be used to allow existing Perl 4 oraperl scripts
+to run with minimal changes; any new development should use L<DBI> directly.
+
+The functions which make up this extension are described in the
+following sections. All functions return a false or undefined (in the
+Perl sense) value to indicate failure.  You do not need to understand
+the references to OCI in these descriptions. They are here to help
+those who wish to extend the routines or to port them to new machines.
+
+The text in this document is largely unchanged from the original Perl4
+oraperl manual written by Kevin Stock <[email protected]>. Any comments
+specific to the DBD::Oracle Oraperl emulation are prefixed by B<DBD:>.
+See the DBD::Oracle and DBI manuals for more information.
+
+B<DBD:> In order to make the oraperl function definitions available in
+perl5 you need to arrange to 'use' the Oraperl.pm module in each file
+or package which uses them. You can do this by simply adding S<C<use
+Oraperl;>> in each file or package. If you need to make the scripts work
+with both the perl4 oraperl and perl5 you should add add the following
+text instead:
+
+  eval 'use Oraperl; 1;' || die $@ if $] >= 5;
+
+=head2 Principal Functions
+
+The main functions for database access are &ora_login(), &ora_open(),
+&ora_bind(), &ora_fetch(), &ora_close(), &ora_do() and &ora_logoff().
+
+=over 2
+
+=item * ora_login
+
+  $lda = &ora_login($system_id, $username, $password)
+
+In order to access information held within an Oracle database, a
+program must first log in to it by calling the &ora_login() function.
+This function is called with three parameters, the system ID (see
+below) of the Oracle database to be used, and the Oracle username and
+password. The value returned is a login identifier (actually an Oracle
+Login Data Area) referred to below as $lda.
+
+Multiple logins may be active simultaneously. This allows a simple
+mechanism for correlating or transferring data between databases.
+
+Most Oracle programs (for example, SQL*Plus or SQL*Forms) examine the
+environment variable ORACLE_SID or TWO_TASK to determine which database
+to connect to. In an environment which uses several different
+databases, it is easy to make a mistake, and attempt to run a program
+on the wrong one.  Also, it is cumbersome to create a program which
+works with more than one database simultaneously. Therefore, Oraperl
+requires the system ID to be passed as a parameter. However, if the
+system ID parameter is an empty string then oracle will use the
+existing value of ORACLE_SID or TWO_TASK in the usual manner.
+
+Example:
+
+  $lda = &ora_login('personnel', 'scott', 'tiger') || die $ora_errstr;
+
+This function is equivalent to the OCI olon and orlon functions.
+
+B<DBD:> note that a name is assumed to be a TNS alias if it does not
+appear as the name of a SID in /etc/oratab or /var/opt/oracle/oratab.
+See the code in Oracle.pm for the full logic of database name handling.
+
+B<DBD:> Since the returned $lda is a Perl5 reference the database login
+identifier is now automatically released if $lda is overwritten or goes
+out of scope.
+
+=item * ora_open
+
+  $csr = &ora_open($lda, $statement [, $cache])
+
+To specify an SQL statement to be executed, the program must call the
+&ora_open() function. This function takes at least two parameters: a
+login identifier (obtained from &ora_login()) and the SQL statement to
+be executed. An optional third parameter specifies the size of the row
+cache to be used for a SELECT statement. The value returned from
+&ora_open() is a statement identifier (actually an ORACLE Cursor)
+referred to below as $csr.
+
+If the row cache size is not specified, a default size is
+used. As distributed, the default is five rows, but this
+may have been changed at your installation (see the
+&ora_version() function and $ora_cache variable below).
+
+Examples:
+
+ $csr = &ora_open($lda, 'select ename, sal from emp order by ename', 10);
+
+ $csr = &ora_open($lda, 'insert into dept values(:1, :2, :3)');
+
+This function is equivalent to the OCI oopen and oparse functions. For
+statements which do not contain substitution variables (see the section
+Substitution Variables below), it also uses of the oexec function. For
+SELECT statements, it also makes use of the odescr and odefin functions
+to allocate memory for the values to be returned from the database.
+
+=item * ora_bind
+
+  &ora_bind($csr, $var, ...)
+
+If an SQL statement contains substitution variables (see the section
+Substitution Variables below), &ora_bind() is used to assign actual
+values to them. This function takes a statement identifier (obtained
+from &ora_open()) as its first parameter, followed by as many
+parameters as are required by the statement.
+
+Example:
+
+ &ora_bind($csr, 50, 'management', 'Paris');
+
+This function is equivalent to the OCI obndrn and oexec statements.
+
+The OCI obndrn function does not allow empty strings to be bound. As
+distributed, $ora_bind therefore replaces empty strings with a single
+space. However, a compilation option allows this substitution to be
+suppressed, causing &ora_bind() to fail. The output from the
+&ora_version() function specifies which is the case at your installation.
+
+=item * ora_fetch
+
+ $nfields = &ora_fetch($csr)
+
+ @data = &ora_fetch($csr [, $trunc])
+
+The &ora_fetch() function is used in conjunction with a SQL SELECT
+statement to retrieve information from a database.  This function takes
+one mandatory parameter, a statement identifier (obtained from
+&ora_open()).
+
+Used in a scalar context, the function returns the number of fields
+returned by the query but no data is actually fetched. This may be
+useful in a program which allows a user to enter a statement interactively.
+
+Example:
+
+ $nfields = &ora_fetch($csr);
+
+Used in an array context, the value returned is an array containing the
+data, one element per field. Note that this will not work as expected:
+
+ @data = &ora_fetch($csr) || die "...";    # WRONG
+
+The || forces a scalar context so ora_fetch returns the number of fields.
+
+An optional second parameter may be supplied to indicate whether the
+truncation of a LONG or LONG RAW field is to be permitted (non-zero) or
+considered an error (zero). If this parameter is not specified, the
+value of the global variable $ora_trunc is used instead. Truncation of
+other datatypes is always considered a error.
+
+B<DBD:> The optional second parameter to ora_fetch is not supported.
+A DBI usage error will be generated if a second parameter is supplied.
+Use the global variable $ora_trunc instead. Also note that the
+experimental DBI blob_read method can be used to retrieve a long:
+
+  $csr->blob_read($field, $offset, $len [, \$dest, $destoffset]);
+
+If truncation occurs, $ora_errno will be set to 1406.  &ora_fetch()
+will complete successfully if truncation is permitted, otherwise it
+will fail.
+
+&ora_fetch() will fail at the end of the data or if an error occurs. It
+is possible to distinguish between these cases by testing the value of
+the variable $ora_errno. This will be zero for end of data, non-zero if
+an error has occurred.
+
+Example:
+
+ while (($deptno, $dname, $loc) = &ora_fetch($csr))
+ {
+   warn "Truncated!!!" if $ora_errno == 1406;
+   # do something with the data
+ }
+ warn $ora_errstr if $ora_errno;
+
+This function is equivalent to the OCI ofetch function.
+
+=item * ora_close
+
+ &ora_close($csr)
+
+If an SQL statement is no longer required (for example, all the data
+selected has been processed, or no more rows are to be inserted) then
+the statement identifier should be released. This is done by calling
+the &ora_close() function with the statement identifier as its only
+parameter.
+
+This function is equivalent to the OCI oclose function.
+
+B<DBD:> Since $csr is a Perl5 reference the statement/cursor is now
+automatically closed if $csr is overwritten or goes out of scope.
+
+
+=item * ora_do
+
+  &ora_do($lda, $statement)
+
+Not all SQL statements return data or contain substitution
+variables. In these cases the &ora_do() function may be
+used as an alternative to &ora_open() and &ora_close().
+This function takes two parameters, a login identifier and
+the statement to be executed.
+
+Example:
+
+ &ora_do($lda, 'drop table employee');
+
+This function is roughly equivalent to
+
+ &ora_close( &ora_open($lda, $statement) )
+
+B<DBD:> oraperl v2 used to return the string 'OK' to indicate
+success with a zero numeric value. The Oraperl emulation now
+uses the string '0E0' to achieve the same effect since it does
+not cause any C<-w> warnings when used in a numeric context.
+
+=item * ora_logoff
+
+  &ora_logoff($lda)
+
+When the program no longer needs to access a given database, the login
+identifier should be released using the &ora_logoff() function.
+
+This function is equivalent to the OCI ologoff function.
+
+B<DBD:> Since $lda is a Perl5 reference the database login identifier
+is now automatically released if $lda is overwritten or goes out of scope.
+
+=back
+
+=head2 Ancillary Functions
+
+Additional functions available are: &ora_titles(),
+&ora_lengths(), &ora_types(), &ora_autocommit(),
+&ora_commit(), &ora_rollback() and &ora_version().
+
+The first three are of most use within a program which
+allows statements to be entered interactively. See, for
+example, the sample program sql which is supplied with
+Oraperl and may have been installed at your site.
+
+=over 2
+
+=item * ora_titles
+
+  @titles = &ora_titles($csr)
+
+A program may determine the field titles of an executed
+query by calling &ora_titles(). This function takes a
+single parameter, a statement identifier (obtained from
+&ora_open()) indicating the query for which the titles are
+required. The titles are returned as an array of strings,
+one for each column.
+
+Titles are truncated to the length of the field, as reported
+by the &ora_lengths() function.
+
+B<DBD:> oraperl v2.2 actually changed the behaviour such that the
+titles were not truncated unless an optional second parameter was
+true.  This was not reflected in the oraperl manual.  The Oraperl
+emulation adopts the non truncating behaviour and doesn't support the
+truncate parameter.
+
+
+=item * ora_lengths
+
+  @lengths = &ora_lengths($csr)
+
+A program may determine the length of each of the fields
+returned by a query by calling the &ora_lengths() function.
+This function takes a single parameter, a statement
+identifier (obtained from &ora_open()) indicating the query
+for which the lengths are required. The lengths are
+returned as an array of integers, one for each column.
+
+
+=item * ora_types
+
+  @types = &ora_types($csr)
+
+A program may determine the type of each of the fields returned by a
+query by calling the &ora_types() function.  This function takes a
+single parameter, a statement identifier (obtained from &ora_open())
+indicating the query for which the lengths are required. The types are
+returned as an array of integers, one for each field.
+
+These types are defined in your OCI documentation. The correct
+interpretation for Oracle v6 is given in the file oraperl.ph.
+
+
+=item * ora_autocommit
+
+  &ora_autocommit($lda, $on_or_off)
+
+Autocommit mode (in which each transaction is committed immediately,
+without waiting for an explicit commit) may be enabled or disabled
+using &ora_autocommit(). This function takes two parameters, a login
+identifier (obtained from &ora_login()) and a true/false value
+indicating whether autocommit is to be enabled (non-zero) or disabled
+(zero).  By default, autocommit is off.
+
+Note that autocommit can only be set per login, not per statement. If
+you need to control autocommit by statement (for example, to allow
+deletions to be rolled back, but insertions to be committed
+immediately) you should make multiple calls to &ora_login() and use a
+separate login identifier for each statement.
+
+
+=item * ora_commit, ora_rollback
+
+  &ora_commit($lda)
+  &ora_rollback($lda)
+
+Modifications to a database may be committed or rolled back using the
+&ora_commit() and &ora_rollback() functions.  These functions take a
+single parameter, a login identifier obtained from &ora_login().
+
+Transactions which have been committed (either explicitly by a call to
+&ora_commit() or implicitly through the use of &ora_autocommit())
+cannot be subsequently rolled back.
+
+Note that commit and rollback can only be used per login, not per
+statement. If you need to commit or rollback by statement you should
+make multiple calls to &ora_login() and use a separate login identifier
+for each statement.
+
+
+=item * ora_version
+
+  &ora_version()
+
+The &ora_version() function prints the version number and
+copyright information concerning Oraperl. It also prints
+the values of various compilation time options. It does not
+return any value, and should not normally be used in a
+program.
+
+Example:
+
+  perl -MOraperl -e 'ora_version()'
+
+  This is Oraperl, version 2, patch level 0.
+
+  Debugging is available, including the -D flag.
+  Default fetch row cache size is 5.
+  Empty bind values are replaced by a space.
+
+  Perl is copyright by Larry Wall; type oraperl -v for details.
+  Additions for oraperl: Copyright 1991, 1992, Kevin Stock.
+
+  Oraperl may be distributed under the same conditions as Perl.
+
+This function is the equivalent of Perl's C<-v> flag.
+
+B<DBD:> The Oraperl emulation printout is similar but not identical.
+
+=back
+
+=head1 VARIABLES
+
+Six special variables are provided, $ora_cache, $ora_long,
+$ora_trunc, $ora_errno, $ora_errstr and $ora_verno.
+
+=head2 Customisation Variables
+
+These variables are used to dictate the behaviour of Oraperl
+under certain conditions.
+
+=over 2
+
+=item * $ora_cache
+
+The $ora_cache variable determines the default cache size used by the
+&ora_open() function for SELECT statements if an explicit cache size is
+not given.
+
+It is initialised to the default value reported by &ora_version() but
+may be set within a program to apply to all subsequent calls to
+&ora_open(). Cursors which are already open are not affected. As
+distributed, the default value is five, but may have been altered at
+your installation.
+
+As a special case, assigning zero to $ora_cache resets it to the
+default value. Attempting to set $ora_cache to a negative value results
+in a warning.
+
+
+=item * $ora_long
+
+Normally, Oraperl interrogates the database to determine the length of
+each field and allocates buffer space accordingly.  This is not
+possible for fields of type LONG or LONGRAW. To allocate space
+according to the maximum possible length (65535 bytes) would obviously
+be extremely wasteful of memory.
+
+Therefore, when &ora_open() determines that a field is a LONG type, it
+allocates the amount of space indicated by the $ora_long variable. This
+is initially set to 80 (for compatibility with Oracle products) but may
+be set within a program to whatever size is required.
+
+$ora_long is only used when fetching data, not when inserting it.
+
+
+=item * $ora_trunc
+
+Since Oraperl cannot determine exactly the maximum length of a LONG
+field, it is possible that the length indicated by $ora_long is not
+sufficient to store the data fetched. In such a case, the optional
+second parameter to &ora_fetch() indicates whether the truncation
+should be allowed or should provoke an error.
+
+If this second parameter is not specified, the value of $ora_trunc is
+used as a default. This only applies to LONG and LONGRAW data types.
+Truncation of a field of any other type is always considered an error
+(principally because it indicates a bug in Oraperl).
+
+=back
+
+=head2 Status Variables
+
+These variables report information about error conditions or about
+Oraperl itself. They may only be read; a fatal error occurs if a
+program attempts to change them.
+
+=over 2
+
+=item * $ora_errno
+
+$ora_errno contains the Oracle error code provoked by the last function
+call.
+
+There are two cases of particular interest concerning &ora_fetch(). If
+a LONG or LONGRAW field is truncated (and truncation is allowed) then
+&ora_fetch() will complete successfully but $ora_errno will be set to
+1406 to indicate the truncation. When &ora_fetch() fails, $ora_errno
+will be set to zero if this was due to the end of data or an error code
+if it was due to an actual error.
+
+
+=item * $ora_errstr
+
+The $ora_errstr variable contains the Oracle error message
+corresponding to the current value of $ora_errno.
+
+
+=item * $ora_verno
+
+The $ora_verno variable contains the version number of Oraperl in the
+form v.ppp where v is the major version number and ppp is the
+patchlevel. For example, in Oraperl version 3, patch level 142,
+$ora_verno would contain the value 3.142 (more or less, allowing for
+floating point error).
+
+=back
+
+
+=head1 SUBSTITUTION VARIABLES
+
+Oraperl allows an SQL statement to contain substitution variables.
+These consist of a colon followed by a number.  For example, a program
+which added records to a telephone list might use the following call to
+&ora_open():
+
+  $csr = &ora_open($csr, "insert into telno values(:1, :2)");
+
+The two names :1 and :2 are called substitution variables.  The
+function &ora_bind() is used to assign values to these variables. For
+example, the following statements would add two new people to the
+list:
+
+  &ora_bind($csr, "Annette", "472-8836");
+  &ora_bind($csr, "Brian", "937-1823");
+
+Note that the substitution variables must be assigned consecutively
+beginning from 1 for each SQL statement, as &ora_bind() assigns its
+parameters in this order. Named substitution variables (for example,
+:NAME, :TELNO) are not permitted.
+
+B<DBD:> Substitution variables are now bound as type 1 (VARCHAR2)
+and not type 5 (STRING) by default. This can alter the behaviour of
+SQL code which compares a char field with a substitution variable.
+See the String Comparison section in the Datatypes chapter of the
+Oracle OCI manual for more details.
+
+You can work around this by using DBD::Oracle's ability to specify
+the Oracle type to be used on a per field basis:
+
+  $char_attrib = { ora_type => 5 }; # 5 = STRING (ala oraperl2.4)
+  $csr = ora_open($dbh, "select foo from bar where x=:1 and y=:2");
+  $csr->bind_param(1, $value_x, $char_attrib);
+  $csr->bind_param(2, $value_y, $char_attrib);
+  ora_bind($csr);  # bind with no parameters since we've done bind_param()'s
+
+
+=head1 DEBUGGING
+
+B<DBD:> The Oraperl $ora_debug variable is not supported. However
+detailed debugging can be enabled at any time by executing
+
+  $h->debug(2);
+
+where $h is either a $lda or a $csr. If debugging is enabled on an
+$lda then it is automatically passed on to any cursors returned by
+&ora_open().
+
+=head1 EXAMPLE
+
+  format STDOUT_TOP =
+  Name Phone
+  ==== =====
+  .
+
+  format STDOUT =
+  @<<<<<<<<<< @>>>>>>>>>>
+  $name, $phone
+  .
+
+  die "You should use oraperl, not perl\n" unless defined &ora_login;
+  $ora_debug = shift if $ARGV[0] =~ /^\-#/;
+
+  $lda = &ora_login('t', 'kstock', 'kstock')
+            || die $ora_errstr;
+  $csr = &ora_open($lda, 'select * from telno order by name')
+            || die $ora_errstr;
+
+  $nfields = &ora_fetch($csr);
+  print "Query will return $nfields fields\n\n";
+
+  while (($name, $phone) = &ora_fetch($csr)) { write; }
+  warn $ora_errstr if $ora_errno;
+
+  die "fetch error: $ora_errstr" if $ora_errno;
+
+  do ora_close($csr) || die "can't close cursor";
+  do ora_logoff($lda) || die "can't log off Oracle";
+
+
+=head1 NOTES
+
+In keeping with the philosophy of Perl, there is no pre-defined limit
+to the number of simultaneous logins or SQL statements which may be
+active, nor to the number of data fields which may be returned by a
+query. The only limits are those imposed by the amount of memory
+available, or by Oracle.
+
+
+=head1 WARNINGS
+
+The Oraperl emulation software shares no code with the original
+oraperl. It is built on top of the new Perl5 DBI and DBD::Oracle
+modules.  These modules are still evolving. (One of the goals of
+the Oraperl emulation software is to allow useful work to be done
+with the DBI and DBD::Oracle modules whilst insulating users from
+the ongoing changes in their interfaces.)
+
+It is quite possible, indeed probable, that some differences in
+behaviour will exist. These are probably confined to error handling.
+
+B<All> differences in behaviour which are not documented here should be
+reported to to [email protected].
+
+
+=head1 SEE ALSO
+
+=over 2
+
+=item Oracle Documentation
+
+SQL Language Reference Manual.
+Programmer's Guide to the Oracle Call Interfaces.
+
+=item Books
+
+Programming Perl by Larry Wall and Randal Schwartz.
+Learning Perl by Randal Schwartz.
+
+=item Manual Pages
+
+perl(1)
+
+=back
+
+=head1 AUTHOR
+
+Original Oraperl 2.4 code and documentation
+by Kevin Stock <[email protected]>.
+
+DBI and Oraperl emulation using DBD::Oracle by Tim Bunce.
+
+=head1 MAINTAINER
+    
+As of DBD::Oracle release 1.17 in February 2006 The Pythian Group, Inc.
+(L<http://www.pythian.com>) are taking the lead in maintaining DBD::Oracle with
+my assistance and gratitude.
+
+=head1 COPYRIGHT
+
+Copyright (c) 1994-2006 Tim Bunce. Ireland.
+
+The DBD::Oracle module is free open source software; you can
+redistribute it and/or modify it under the same terms as Perl 5.
+
+=cut

Modified: dbd-oracle/branches/DBDOracle8/blib/arch/auto/DBD/Oracle8/mk.pm
==============================================================================
--- dbd-oracle/branches/DBDOracle8/blib/arch/auto/DBD/Oracle8/mk.pm	(original)
+++ dbd-oracle/branches/DBDOracle8/blib/arch/auto/DBD/Oracle8/mk.pm	Thu Jan  7 18:12:21 2010
@@ -15,7 +15,7 @@
                                   },
                         'OBJECT' => '$(O_FILES)',
                         'clean' => {
-                                     'FILES' => 'xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*'
+                                     'FILES' => 'xstmp.c Oracle8.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*'
                                    },
                         'EXE_FILES' => [
                                          'ora_explain'
@@ -153,7 +153,7 @@
                                              '#     OBJECT => q[$(O_FILES)]',
                                              '#     PREREQ_PM => { DBI=>q[0] }',
                                              '#     VERSION_FROM => q[Oracle8.pm]',
-                                             '#     clean => { FILES=>q[xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }',
+                                             '#     clean => { FILES=>q[xstmp.c Oracle8.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }',
                                              '#     dist => { DIST_DEFAULT=>q[clean distcheck disttest tardist], COMPRESS=>q[gzip -v9], PREOP=>q[$(MAKE) -f Makefile.old distdir], SUFFIX=>q[gz] }',
                                              '
 # --- MakeMaker post_initialize section:'

Modified: dbd-oracle/branches/DBDOracle8/blib/lib/Oraperl.pm
==============================================================================
--- dbd-oracle/branches/DBDOracle8/blib/lib/Oraperl.pm	(original)
+++ dbd-oracle/branches/DBDOracle8/blib/lib/Oraperl.pm	Thu Jan  7 18:12:21 2010
@@ -1,4 +1,4 @@
-# Oraperl Emulation Interface for Perl 5 DBD::Oracle DBI
+# Oraperl Emulation Interface for Perl 5 DBD::Oracle8 DBI
 #
 # Oraperl.pm
 #
@@ -52,9 +52,9 @@
 
 
 # Install Driver (use of install_driver is a special case here)
-$drh = DBI->install_driver('Oracle');
+$drh = DBI->install_driver('Oracle8');
 if ($drh) {
-    print "DBD::Oracle driver installed as $drh\n" if $debug;
+    print "DBD::Oracle8 driver installed as $drh\n" if $debug;
     $drh->trace($debug);
     $drh->{CompatMode} = 1;
     $drh->{Warn}       = 0;
@@ -65,7 +65,7 @@
 
 sub _func_ref {
     my $name = shift;
-    my $pkg = ($Oraperl::safe) ? "DBI" : "DBD::Oracle";
+    my $pkg = ($Oraperl::safe) ? "DBI" : "DBD::Oracle8";
     \&{"${pkg}::$name"};
 }
 
@@ -124,7 +124,7 @@
 }
 
 *ora_bind  = _func_ref('st::execute');
-*ora_fetch = \&{"DBD::Oracle::st::ora_fetch"};
+*ora_fetch = \&{"DBD::Oracle8::st::ora_fetch"};
 *ora_close = _func_ref('st::finish');
 
 sub ora_do {

Modified: dbd-oracle/branches/DBDOracle8/dbdimp.obj
==============================================================================
Binary files. No diff available.

Modified: dbd-oracle/branches/DBDOracle8/mk.pm
==============================================================================
--- dbd-oracle/branches/DBDOracle8/mk.pm	(original)
+++ dbd-oracle/branches/DBDOracle8/mk.pm	Thu Jan  7 18:12:21 2010
@@ -15,7 +15,7 @@
                                   },
                         'OBJECT' => '$(O_FILES)',
                         'clean' => {
-                                     'FILES' => 'xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*'
+                                     'FILES' => 'xstmp.c Oracle8.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*'
                                    },
                         'EXE_FILES' => [
                                          'ora_explain'
@@ -153,7 +153,7 @@
                                              '#     OBJECT => q[$(O_FILES)]',
                                              '#     PREREQ_PM => { DBI=>q[0] }',
                                              '#     VERSION_FROM => q[Oracle8.pm]',
-                                             '#     clean => { FILES=>q[xstmp.c Oracle.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }',
+                                             '#     clean => { FILES=>q[xstmp.c Oracle8.xsi dll.base dll.exp sqlnet.log libOracle.def ora_explain mk.pm DBD_ORA_OBJ.*] }',
                                              '#     dist => { DIST_DEFAULT=>q[clean distcheck disttest tardist], COMPRESS=>q[gzip -v9], PREOP=>q[$(MAKE) -f Makefile.old distdir], SUFFIX=>q[gz] }',
                                              '
 # --- MakeMaker post_initialize section:'

Modified: dbd-oracle/branches/DBDOracle8/oci8.obj
==============================================================================
Binary files. No diff available.

Modified: dbd-oracle/branches/DBDOracle8/sqlnet.log
==============================================================================
--- dbd-oracle/branches/DBDOracle8/sqlnet.log	(original)
+++ dbd-oracle/branches/DBDOracle8/sqlnet.log	Thu Jan  7 18:12:21 2010
@@ -321,3 +321,143 @@
     TNS-00530: Message 530 not found; No message file for product=NETWORK, facility=TNS
     nt secondary err code: 126
     nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:25
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:25
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:25
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:26
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:27
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:27
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0
+
+
+***********************************************************************
+Fatal NI connect error 12560, connecting to:
+ (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracledbdora8)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=dbdora8)(CID=(PROGRAM=C:\Perl\bin\perl.exe)(HOST=GNARD-GNAP)(USER=John?Scoles))))
+
+  VERSION INFORMATION:
+	TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
+	Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.7.0.0 - Production
+  Time: 07-JAN-2010 21:10:32
+  Tracing not turned on.
+  Tns error struct:
+    nr err code: 0
+    ns main err code: 12560
+    TNS-12560: TNS:protocol adapter error
+    ns secondary err code: 0
+    nt main err code: 530
+    TNS-00530: Protocol adapter error
+    nt secondary err code: 2
+    nt OS err code: 0

Modified: dbd-oracle/branches/DBDOracle8/t/10general.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/10general.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/10general.t	Thu Jan  7 18:12:21 2010
@@ -5,7 +5,7 @@
 use DBI;
 use Oraperl;
 use Config;
-
+use DBD::Oracle8;
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';
 
@@ -79,9 +79,9 @@
 	$dbh->{RaiseError} = 1;
 	$dbh->do("some invalid sql statement");
 };
-ok($@    =~ /DBD::Oracle::db do failed:/, "eval error: ``$@'' expected 'do failed:'");
+ok($@    =~ /DBD::Oracle8::db do failed:/, "eval error: ``$@'' expected 'do failed:'");
 #print "''$warn''";
-ok($warn =~ /DBD::Oracle::db do failed:/, "warn error: ``$warn'' expected 'do failed:'");
+ok($warn =~ /DBD::Oracle8::db do failed:/, "warn error: ``$warn'' expected 'do failed:'");
 ok($DBI::err);
 ok($ora_errno);
 is($ora_errno, $DBI::err);
@@ -97,7 +97,7 @@
 $dbh->{PrintError} = 0;
 ok(!$dbh->ping);
 
-my $ora_oci = DBD::Oracle::ORA_OCI(); # dualvar
+my $ora_oci = DBD::Oracle8::ORA_OCI(); # dualvar
 printf "ORA_OCI = %d (%s)\n", $ora_oci, $ora_oci;
 ok("$ora_oci");
 ok($ora_oci >= 8);

Modified: dbd-oracle/branches/DBDOracle8/t/20select.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/20select.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/20select.t	Thu Jan  7 18:12:21 2010
@@ -1,7 +1,7 @@
 #!perl -w
 
 use DBI;
-use DBD::Oracle qw(:ora_types ORA_OCI);
+use DBD::Oracle8 qw(:ora_types ORA_OCI);
 use Data::Dumper;
 use Math::BigInt;
 use strict;

Modified: dbd-oracle/branches/DBDOracle8/t/21nchar.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/21nchar.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/21nchar.t	Thu Jan  7 18:12:21 2010
@@ -9,7 +9,7 @@
 require 'nchar_test_lib.pl';
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw(:ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw(:ora_types ORA_OCI SQLCS_NCHAR );
 
 my $dbh;
 $| = 1;

Modified: dbd-oracle/branches/DBDOracle8/t/22nchar_al32utf8.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/22nchar_al32utf8.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/22nchar_al32utf8.t	Thu Jan  7 18:12:21 2010
@@ -6,7 +6,7 @@
 use Test::More;
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw( :ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw( :ora_types ORA_OCI SQLCS_NCHAR );
 
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';

Modified: dbd-oracle/branches/DBDOracle8/t/22nchar_utf8.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/22nchar_utf8.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/22nchar_utf8.t	Thu Jan  7 18:12:21 2010
@@ -6,7 +6,7 @@
 use Test::More;
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw( :ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw( :ora_types ORA_OCI SQLCS_NCHAR );
 
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';

Modified: dbd-oracle/branches/DBDOracle8/t/23wide_db.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/23wide_db.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/23wide_db.t	Thu Jan  7 18:12:21 2010
@@ -6,7 +6,7 @@
 use Test::More;
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw( :ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw( :ora_types ORA_OCI SQLCS_NCHAR );
 
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';

Modified: dbd-oracle/branches/DBDOracle8/t/23wide_db_8bit.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/23wide_db_8bit.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/23wide_db_8bit.t	Thu Jan  7 18:12:21 2010
@@ -6,7 +6,7 @@
 use Test::More;
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw( :ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw( :ora_types ORA_OCI SQLCS_NCHAR );
 
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';

Modified: dbd-oracle/branches/DBDOracle8/t/23wide_db_al32utf8.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/23wide_db_al32utf8.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/23wide_db_al32utf8.t	Thu Jan  7 18:12:21 2010
@@ -6,7 +6,7 @@
 use Test::More;
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw( :ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw( :ora_types ORA_OCI SQLCS_NCHAR );
 
 unshift @INC ,'t';
 require 'nchar_test_lib.pl';

Modified: dbd-oracle/branches/DBDOracle8/t/24implicit_utf8.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/24implicit_utf8.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/24implicit_utf8.t	Thu Jan  7 18:12:21 2010
@@ -9,7 +9,7 @@
 require 'nchar_test_lib.pl';
 
 use DBI qw(:sql_types);
-use DBD::Oracle qw(:ora_types ORA_OCI SQLCS_NCHAR );
+use DBD::Oracle8 qw(:ora_types ORA_OCI SQLCS_NCHAR );
 
 my $dbh;
 $| = 1;

Modified: dbd-oracle/branches/DBDOracle8/t/25plsql.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/25plsql.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/25plsql.t	Thu Jan  7 18:12:21 2010
@@ -14,7 +14,7 @@
 }
 
 use DBI;
-use DBD::Oracle qw(ORA_RSET SQLCS_NCHAR);
+use DBD::Oracle8 qw(ORA_RSET SQLCS_NCHAR);
 use strict;
 
 unshift @INC ,'t';
@@ -188,7 +188,7 @@
 #	ORA-06502: PL/SQL: numeric or value error
 #	ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)
 $tmp = $csr->execute;
-#$tmp = undef if DBD::Oracle::ORA_OCI()>=8; # because BindByName given huge max len
+#$tmp = undef if DBD::Oracle8::ORA_OCI()>=8; # because BindByName given huge max len
 ok(0, !defined $tmp, 1);
 # rebind with more space - and it should work
 ok(0, $csr->bind_param_inout(':arg', \$p1, 200), 1);
@@ -308,7 +308,7 @@
     # http://www.nntp.perl.org/group/perl.dbi.users/24217
     my $ora_server_version = $dbh->func("ora_server_version");
     skip "Client/server version < 9.0", 15
-	if DBD::Oracle::ORA_OCI() < 9.0 || $ora_server_version->[0] < 9;
+	if DBD::Oracle8::ORA_OCI() < 9.0 || $ora_server_version->[0] < 9;
     my $func_name = "dbd_oracle_nvctest".($ENV{DBD_ORACLE_SEQ}||'');
     $dbh->do(qq{
 	CREATE OR REPLACE FUNCTION $func_name(arg nvarchar2, arg2 nvarchar2)

Modified: dbd-oracle/branches/DBDOracle8/t/30long.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/30long.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/30long.t	Thu Jan  7 18:12:21 2010
@@ -2,7 +2,7 @@
 # vim:ts=8:sw=4
 
 use DBI;
-use DBD::Oracle qw(:ora_types SQLCS_NCHAR SQLCS_IMPLICIT ORA_OCI);
+use DBD::Oracle8 qw(:ora_types SQLCS_NCHAR SQLCS_IMPLICIT ORA_OCI);
 use strict;
 use Test::More;
 

Modified: dbd-oracle/branches/DBDOracle8/t/40ph_type.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/40ph_type.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/40ph_type.t	Thu Jan  7 18:12:21 2010
@@ -15,7 +15,7 @@
 
 use strict;
 use DBI qw(neat);
-use DBD::Oracle qw(ORA_OCI);
+use DBD::Oracle8 qw(ORA_OCI);
 use vars qw($tests);
 
 unshift @INC ,'t';

Modified: dbd-oracle/branches/DBDOracle8/t/50cursor.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/50cursor.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/50cursor.t	Thu Jan  7 18:12:21 2010
@@ -15,7 +15,7 @@
 }
 
 use DBI;
-use DBD::Oracle qw(ORA_RSET);
+use DBD::Oracle8 qw(ORA_RSET);
 use strict;
 
 unshift @INC ,'t';

Modified: dbd-oracle/branches/DBDOracle8/t/55nested.t
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/55nested.t	(original)
+++ dbd-oracle/branches/DBDOracle8/t/55nested.t	Thu Jan  7 18:12:21 2010
@@ -14,7 +14,7 @@
 }
 
 use DBI;
-use DBD::Oracle qw(ORA_RSET);
+use DBD::Oracle8 qw(ORA_RSET);
 use strict;
 
 unshift @INC ,'t';

Modified: dbd-oracle/branches/DBDOracle8/t/nchar_test_lib.pl
==============================================================================
--- dbd-oracle/branches/DBDOracle8/t/nchar_test_lib.pl	(original)
+++ dbd-oracle/branches/DBDOracle8/t/nchar_test_lib.pl	Thu Jan  7 18:12:21 2010
@@ -3,7 +3,7 @@
 use Carp;
 use Data::Dumper;
 use DBI;
-use DBD::Oracle qw(ORA_OCI ora_env_var);
+use DBD::Oracle8 qw(ORA_OCI ora_env_var);
 
 require utf8;
 
@@ -144,6 +144,7 @@
 sub oracle_test_dsn
 {
     my( $default, $dsn ) = ( 'dbi:Oracle8:', $ENV{ORACLE_DSN} );
+    
     $dsn ||= $ENV{DBI_DSN} if $ENV{DBI_DSN} && ($ENV{DBI_DSN} =~ /^$default/io);
     $dsn ||= $default;
     return $dsn;

Modified: dbd-oracle/branches/DBDOracle8/vc70.pdb
==============================================================================
Binary files. No diff available.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.