| DBIx-SQLEngine documentation | Contained in the DBIx-SQLEngine distribution. |
DBIx::SQLEngine::Driver::Informix - Support DBD::Informix and DBD::ODBC/Informix
DBI Wrapper: Adds methods to a DBI database handle.
my $sqldb = DBIx::SQLEngine->new( 'dbi:Informix:test_data@my_server' );
Portability Subclasses: Uses driver's idioms or emulation.
$sqldb->do_insert( # use SERIAL column
table => 'students', sequence => 'id',
values => { 'name'=>'Dave', 'age'=>'19', 'status'=>'minor' },
);
This package provides a subclass of DBIx::SQLEngine which compensates for Informix's idiosyncrasies.
You do not need to use this package directly; when you connect to a database, the SQLEngine object is automatically re-blessed in to the appropriate subclass.
For more information about the underlying driver class, see DBD::Informix.
Note that this driver class has been added recently and not yet tested in real-world conditions.
To Do: Add missing functionality from related CPAN modules. See DBD::Informix::Summary, DBIx::SearchBuilder::Handle::Informix and maybe Dimedis::SqlDriver::Informix.
Not yet supported. Perhaps we should use "first $maxrows" and throw out the first $offset?
$sqldb->do_insert_with_sequence( $sequence_name, %sql_clauses ) : $row_count
Implemented using _seq_do_insert_postfetch and seq_fetch_current.
$sqldb->seq_fetch_current( ) : $current_value
Implemented using DBD::Informix's ix_sqlerrd attribute.
Note that this doesn't fetch the current sequence value for a given table, since it doesn't respect the table and field arguments, but merely returns the last sequencial value created during this session.
$sqldb->dbms_create_column_types () : %column_type_codes
Implemented using Informix's byte and SERIAL types.
$sqldb->dbms_create_column_text_long_type () : $col_type_str
Implemented using Informix's text type.
$sqldb->fetch_storedproc( $proc_name, @arguments ) : $rows
Calls fetch_sql with "execute procedure", the procedure name, and the arguments using placeholders.
$sqldb->do_storedproc( $proc_name, @arguments ) : $row_count
Calls do_sql with "execute procedure", the procedure name, and the arguments using placeholders.
$sqldb->create_storedproc( $proc_name, $definition )
Calls do_sql with "create procedure", the procedure name, and the definition.
$sqldb->drop_storedproc( $proc_name )
Calls do_sql with "drop procedure" and the procedure name.
See DBIx::SQLEngine for the overall interface and developer documentation.
See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.
| DBIx-SQLEngine documentation | Contained in the DBIx-SQLEngine distribution. |
######################################################################## package DBIx::SQLEngine::Driver::Informix; use strict; use Carp; ######################################################################## ########################################################################
sub sql_limit { confess("Not yet supported") } ######################################################################## ########################################################################
# $rows = $self->do_insert_with_sequence( $sequence, %clauses ); sub do_insert_with_sequence { (shift)->_seq_do_insert_postfetch( @_ ) } # $current_id = $sqldb->seq_fetch_current( ); sub seq_fetch_current { my $self = shift; $self->get_dbh->{ix_sqlerrd}[1] } ######################################################################## ########################################################################
sub dbms_create_column_types { 'sequential' => 'SERIAL', 'binary' => 'byte', } sub dbms_create_column_text_long_type { 'text' } ######################################################################## ########################################################################
sub fetch_storedproc { (shift)->fetch_sql( "execute procedure " . (shift) . "(" . join(', ', ('?') x scalar(@_) ) . ")", @_) } sub do_storedproc { (shift)->do_sql( "execute procedure " . (shift) . "(" . join(', ', ('?') x scalar(@_) ) . ")", @_) } sub create_storedproc { (shift)->do_sql( "create procedure $_[0] " . join("\n", @_ ) ) } sub drop_storedproc { (shift)->do_sql( "drop procedure $_[0]" ) } ########################################################################
######################################################################## 1;