Hello Dan,

        Look at the tests for DBD::ADO and DBD::ODBC.  The type_info is
        used to convert a standard SQL type to a source specific.  An
        example would be a SQL_VARCHAR.  When you type_info(SQL_VARCHAR)
        you get the "best" possible data type match for that
        source/database.

        Included is an example of type_info(SQL_VARCHAR) results from a
        number of different databases and DBI drivers.  

Tom

perl -w type_info.pl

set DBI_DSN=dbi:ADO:File Name=.\access.udl
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
MSDASQL.1       2.7
SQL_VARCHAR type: VARCHAR

set DBI_DSN=dbi:ADO:Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\mytest.mdb
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
Microsoft.Jet.OLEDB.4.0 2.7
SQL_VARCHAR type: VarChar

set DBI_DSN=dbi:ADO:File Name=.\mssql.udl
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
SQLOLEDB.1      2.7
SQL_VARCHAR type: varchar

set DBI_DSN=dbi:ADO:Provider=MSDASQL;Driver={Microsoft Text Driver (*.txt; 
*.csv)};DBQ=.\;ConnectionTimeout=30
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
MSDASQL.1       2.7
SQL_VARCHAR type: CHAR

set DBI_DSN=dbi:ADO:Provider=MSDASQL;Driver={Microsoft Excel Driver (*.xls)}; 
DBQ=.\AddressDB.xls;ConnectionTimeout=30
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
MSDASQL.1       2.7
SQL_VARCHAR type: VARCHAR

set DBI_DSN=dbi:ADO:File Name=.\oracle8i.udl
DBI::VERSION      1.20
DBD::ADO::VERSION 2.4_01
OraOLEDB.Oracle.1       2.7
SQL_VARCHAR type: VARCHAR2

set DBI_DSN=dbi:ODBC:PERL_TEST_ACCESS
perl -w type_info.pl
DBI::VERSION      1.20
SQL_VARCHAR type: VARCHAR

set DBI_DSN=dbi:ODBC:PERL_TEST_MSSQL
DBI::VERSION      1.20
SQL_VARCHAR type: varchar

set DBI_DSN=dbi:ODBC:PERL_TEST_ORACLE
DBI::VERSION      1.20
SQL_VARCHAR type: VARCHAR2




#!perl
# vim:ts=4:sw=4:ai:aw:

use strict;
use DBI qw(:sql_types);

# Simple connect and select script using DSN-Less ADO connection.
my $dsn = 
        $ENV{DBI_DSN} ||
        q{dbi:ADO:Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\mytest.mdb};

# User and Password not needed.
my $user = 
        $ENV{DBI_USER} ||
        undef;
my $pass = 
        $ENV{DBI_PASS} ||
        undef;

# Connect to the database.
my $dbh = DBI->connect( $dsn, $user, $pass,
        {PrintError=>1,RaiseError=>1} ) or die $DBI::errstr;

print "DBI::VERSION      $DBI::VERSION\n";
print "DBD::ADO::VERSION $DBD::ADO::VERSION\n";

# Information about the ADO/OLEDB Provider

my $ado_conn = $dbh->{ado_conn};

print $ado_conn->{Provider}, "\t",$ado_conn->{Version}, "\n";

my $tia = $dbh->type_info(SQL_VARCHAR);

print "SQL_VARCHAR type: ", $tia->{TYPE_NAME}, "\n";

$dbh->disconnect if $dbh;

exit;

__END__

On Thu, Nov 29, 2001 at 05:59:11PM +1300, Dan Horne wrote:
> 
> I know the definitions, syntax are in the doco, but can someone send me some
> concrete examples of type_info being used?

-- 
Thomas A. Lowery
See DBI/FAQ http://tlowery.hypermart.net

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

Reply via email to