DBD::ODBC

Description

DBD::ODBC Perl module contains a ODBC Driver for DBI. SYNOPSIS use DBI; $dbh = DBI->connect(dbi:ODBC:DSN, user, password); Private DBD::ODBC Attributes odbc_more_results (applies to statement handle only!) Use this attribute to determine if there are more result sets available. SQL Server supports this feature. Use this as follows: do { my @row; while (@row = $sth->fetchrow_array()) { # do stuff here } } while ($sth->{odbc_more_results}); Note that with multiple result sets and output parameters (i.e. using bind_param_inout, dont expect output parameters to be bound until ALL result sets have been retrieved. odbc_ignore_named_placeholders Use this if you have special needs (such as Oracle triggers, etc) where :new or :name mean something special and are not just place holder names You must then use ? for binding parameters. Example: $dbh->{odbc_ignore_named_placeholders} = 1; $dbh->do("create trigger foo as if :new.x <> :old.x then ... etc"); Without this, DBD::ODBC will think :new and :old are placeholders for binding and get confused. odbc_default_bind_type This value defaults to 0. Older versions of DBD::ODBC assumed that the binding type was 12 (SQL_VARCHAR). Newer versions default to 0, which means that DBD::ODBC will attempt to query the driver via SQLDescribeParam to determine the correct type. If the driver doesnt support SQLDescribeParam, then DBD::ODBC falls back to using SQL_VARCHAR as the default, unless overridden by bind_param() odbc_force_rebind This is to handle special cases, especially when using multiple result sets. Set this before execute to "force" DBD::ODBC to re-obtain the result sets number of columns and column types for each execute. Especially useful for calling stored procedures which may return different result sets each execute. The only performance penalty is during execute(), but I didnt want to incur that penalty for all circumstances. It is probably fairly rare that this occurs. This attribute will be automatically set when multiple result sets are triggered. Most people shouldnt have to worry about this. odbc_async_exec Allow asynchronous execution of queries. Right now, this causes a spin-loop (with a small "sleep") until the SQL is complete. This is useful, however, if you want the error handling and asynchronous messages (see the err_handler) below. See t/20SQLServer.t for an example of this. odbc_exec_direct Force DBD::ODBC to use SQLExecDirect instead of SQLPrepare() then SQLExecute. There are drivers that only support SQLExecDirect and the DBD::ODBC do() override doesnt allow returning result sets. Therefore, the way to do this now is to set the attributed odbc_exec_direct. There are currently two ways to get this: $dbh->prepare($sql, { odbc_exec_direct => 1}); and $dbh->{odbc_exec_direct} = 1; When $dbh->prepare() is called with the attribute "ExecDirect" set to a non-zero value dbd_st_prepare do NOT call SQLPrepare, but set the sth flag odbc_exec_direct to 1. odbc_err_handler Allow errors to be handled by the application. A call-back function supplied by the application to handle or ignore messages. If the error handler returns 0, the error is ignored, otherwise the error is passed through the normal DBI error handling structure(s). This can also be used for procedures under MS SQL Server (Sybase too, probably) to obtain messages from system procedures such as DBCC. Check t/20SQLServer.t and mytest/testerrhandler.pl The callback function takes three parameters: the SQLState, the ErrorMessage and the native server error. odbc_SQL_ROWSET_SIZE Here is the information from the original patch, however, Ive learned since from other sources that this could/has caused SQL Server to "lock up". Please use at your own risk! SQL_ROWSET_SIZE attribute patch from Andrew Brown > There are only 2 additional lines allowing for the setting of > SQL_ROWSET_SIZE as db handle option. > > The purpose to my madness is simple. SqlServer (7 anyway) by default > supports only one select statement at once (using std ODBC cursors). > According to the SqlServer documentation you can alter the default setting > of > three values to force the use of server cursors - in which case multiple > selects are possible. > > The code change allows for: > $dbh->{SQL_ROWSET_SIZE} = 2; # Any value > 1 > > For this very purpose. > > The setting of SQL_ROWSET_SIZE only affects the extended fetch command as > far as I can work out and thus setting this option shouldnt affect > DBD::ODBC operations directly in any way. > > Andrew > SQL_DRIVER_ODBC_VER This, while available via get_info() is captured here. I may get rid of this as I only used it for debugging purposes. odbc_cursortype (applies to connect only!) This allows multiple concurrent statements on SQL*Server. In your connect, add { odbc_cursortype => 2 }. If you are using DBI > 1.41, you should also be able to use { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC } instead. For example: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { RaiseError => 1, odbc_cursortype => 2}); my $sth = $dbh->prepare("one statement"); my $sth2 = $dbh->prepare("two statement"); $sth->execute; my @row; while (@row = $sth->fetchrow_array) { $sth2->execute($row[0]); } See t/20SqlServer.t for an example. odbc_query_timeout This allows the end user to set a timeout for queries on the ODBC side. After your connect, add { odbc_query_timeout => 30 } or set on the dbh before executing the statement. The default is 0, no timeout. Note that some drivers may not support this attribute. See t/20SqlServer.t for an example. odbc_has_unicode (applies to database handle only) A read-only attribute signifying whether DBD::ODBC was built with the C macro WITH_UNICODE or not. A value of 1 indicates DBD::ODBC was built with WITH_UNICODE else the value returned is 0. Building WITH_UNICODE affects columns and parameters which are SQL_C_WCHAR, SQL_WCHAR, SQL_WVARCHAR, and SQL_WLONGVARCHAR. When odbc_has_unicode is 1, DBD::ODBC will: bind columns the database declares as wide characters as SQL_Wxxx This means that UNICODE data stored in these columns will be returned to Perl in UTF-8 and with the UTF8 flag set. bind parameters the database declares as wide characters as SQL_Wxxx Parameters bound where the database declares the parameter as being a wide character (or where the parameter type is explicitly set to a wide type - SQL_Wxxx) can be UTF8 in Perl and will be mapped to UTF16 before passing to the driver. NOTE: You will need at least Perl 5.8.1 to use UNICODE with DBD::ODBC. NOTE: At this time SQL statements are still treated as native encoding i.e. DBD::ODBC does not call SQLPrepareW with UNICODE strings. If you need a unicode constant in an SQL statement, you have to pass it as parameter or use SQL functions to convert your constant from native encoding to Unicode. NOTE: Binding of unicode output parameters is coded but untested. NOTE: When building DBD::ODBC on Windows ($^O eq MSWin32) the WITH_UNICODE macro is automatically added. To disable specify -nou as an argument to Makefile.PL (e.g. nmake Makefile.PL -nou). On non-Windows platforms the WITH_UNICODE macro is not enabled by default and to enable you need to specify the -u argument to Makefile.PL. Please bare in mind that some ODBC drivers do not support SQL_Wxxx columns or parameters. UNICODE support in ODBC Drivers differs considerably. Please read the README.unicode file for further details. odbc_version (applies to connect only!) This was added prior to the move to ODBC 3.x to allow the caller to "force" ODBC 3.0 compatibility. Its probably not as useful now, but it allowed get_info and get_type_info to return correct/updated information that ODBC 2.x didnt permit/provide. Since DBD::ODBC is now 3.x, this can be used to force 2.x behavior via something like: my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass, { odbc_version => 2});.

Dbd - Size - Rowset - Note - Odbc Perl - Result Sets - Perl Module - Odbc Driver - Sql - Unicode - Sets - Driver - Parameters - Result - Dbdodbc

Published By:DBD::ODBC team

License Type:Freeware

Date Added:22 October, 2010

Version:1.14

Price:Free

Downloads:110

Size:122.9 KB

Platform: Linux

What people say
- required fields
     
Related Downloads

mod_log_dbd package is a module for Apache 2.2+ that writes access logs to a database using the APR DBD framework. Its designed for simplicity and speed, and therefore lacks some of the features of other logging modules.

DateAug 23, 2010

AuthorBrandon Fosdick

Size204.8 KB

LicenseFreeware

PriceFree

PlatformLinux

CategoryLinux Internet

DB2::db is a framework wrapper around DBD::DB2 for a specific database. SYNOPSIS package myDB; use DB2::db our @ISA = qw( DB2::db ); ...

DateAug 23, 2010

AuthorDarin McBride

Size20.5 KB

LicenseFreeware

PriceFree

PlatformLinux

CategoryLinux Programming

DBD::JDBC is a JDBC proxy driver for the DBI module. SYNOPSIS use DBI; $dbh = DBI->connect("dbi:JDBC:hostname=$hostname;port=$port;url=$url", $user, $password); # See the DBI module documentation.

DateSep 14, 2010

AuthorGennis Emerson

Size1024.0 KB

LicenseFreeware

PriceFree

PlatformLinux

CategoryLinux Programming

DBD::ODBC::Changes is a Perl module with logs of significant changes to the DBD::ODBC..

DateOct 17, 2010

AuthorDBD::ODBC::Changes Team

Size97.3 KB

LicenseFreeware

PriceFree

PlatformLinux

CategoryLinux Programming

Relations::Display is a DBI/DBD::mysql Query Graphing Perl module. SYNOPSIS # DBI, Relations::Display Script that creates a # matrix, table, and graph from a query.

DateSep 14, 2010

AuthorGAF-3 Industries, Inc.

Size24.6 KB

LicenseFreeware

PriceFree

PlatformLinux

CategoryLinux Programming