The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package DBD::Oracle::GetInfo;

use DBD::Oracle();

my $fmt = '%02d.%02d.%1d%1d%1d%1d';   # ODBC version string: ##.##.#####

my $sql_driver_ver = sprintf $fmt, split (/\./, "$DBD::Oracle::VERSION.0.0.0.0.0.0");

sub sql_dbms_version {
    my $dbh = shift;
    local $^W; # for ora_server_version having too few parts
    return sprintf $fmt, @{DBD::Oracle::db::ora_server_version($dbh)};
}
sub sql_data_source_name {
    my $dbh = shift;
    return 'dbi:Oracle:' . $dbh->{Name};
}
sub sql_user_name {
    my $dbh = shift;
    # XXX OPS$
    return $dbh->{CURRENT_USER};
}

%info = (
    117 =>  0                         # SQL_ALTER_DOMAIN
,   114 =>  2                         # SQL_CATALOG_LOCATION
, 10003 => 'N'                        # SQL_CATALOG_NAME
,    41 => '@'                        # SQL_CATALOG_NAME_SEPARATOR
,    42 => 'Database Link'            # SQL_CATALOG_TERM
,    87 => 'Y'                        # SQL_COLUMN_ALIAS
,    22 =>  1                         # SQL_CONCAT_NULL_BEHAVIOR
,   127 =>  0                         # SQL_CREATE_ASSERTION
,   130 =>  0                         # SQL_CREATE_DOMAIN
,     2 => \&sql_data_source_name     # SQL_DATA_SOURCE_NAME
,    17 => 'Oracle'                   # SQL_DBMS_NAME
,    18 => \&sql_dbms_version         # SQL_DBMS_VERSION
,     6 => 'DBD/Oracle.pm'            # SQL_DRIVER_NAME
,     7 =>  $sql_driver_ver           # SQL_DRIVER_VER
,   136 =>  0                         # SQL_DROP_ASSERTION
,   139 =>  0                         # SQL_DROP_DOMAIN
,    28 =>  1                         # SQL_IDENTIFIER_CASE
,    29 => '"'                        # SQL_IDENTIFIER_QUOTE_CHAR
,    34 =>  0                         # SQL_MAX_CATALOG_NAME_LEN
,    30 => 30                         # SQL_MAX_COLUMN_NAME_LEN
, 10005 => 30                         # SQL_MAX_IDENTIFIER_LEN
,    32 => 30                         # SQL_MAX_OWNER_NAME_LEN
,    34 =>  0                         # SQL_MAX_QUALIFIER_NAME_LEN
,    32 => 30                         # SQL_MAX_SCHEMA_NAME_LEN
,    35 => 30                         # SQL_MAX_TABLE_NAME_LEN
,   107 => 30                         # SQL_MAX_USER_NAME_LEN
,    90 => 'N'                        # SQL_ORDER_BY_COLUMNS_IN_SELECT
,    39 => 'Owner'                    # SQL_OWNER_TERM
,    40 => 'Procedure'                # SQL_PROCEDURE_TERM
,   114 =>  2                         # SQL_QUALIFIER_LOCATION
,    41 => '@'                        # SQL_QUALIFIER_NAME_SEPARATOR
,    42 => 'Database Link'            # SQL_QUALIFIER_TERM
,    93 =>  3                         # SQL_QUOTED_IDENTIFIER_CASE
,    39 => 'Owner'                    # SQL_SCHEMA_TERM
,    14 => '\\'                       # SQL_SEARCH_PATTERN_ESCAPE
,    13 =>  sub {"$_[0]->{Name}"}     # SQL_SERVER_NAME
,    94 => '$#'                       # SQL_SPECIAL_CHARACTERS
,    45 => 'Table'                    # SQL_TABLE_TERM
,    46 =>  3                         # SQL_TXN_CAPABLE
,    47 => \&sql_user_name            # SQL_USER_NAME
);

1;