| Class-DBI-Loader-DB2 documentation | Contained in the Class-DBI-Loader-DB2 distribution. |
Class::DBI::Loader::DB2 - Class::DBI::Loader DB2 implementation.
use Class::DBI::Loader;
# $loader is a Class::DBI::Loader::DB2
my $loader = Class::DBI::Loader->new(
dsn => "dbi:DB2:dbname",
user => "root",
password => "",
namespace => "Data",
);
my $class = $loader->find_class('film'); # $class => Data::Film
my $obj = $class->retrieve(1);
please see Class::DBI::Loader
Mark Ferris <mark.ferris@geac.com>
Copyright (C) 2004 Mark Ferris. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Class-DBI-Loader-DB2 documentation | Contained in the Class-DBI-Loader-DB2 distribution. |
package Class::DBI::Loader::DB2; use strict; use DBI; use Carp (); require Class::DBI::DB2; require Class::DBI::Loader::Generic; use base qw(Class::DBI::Loader::Generic); use vars qw($VERSION); $VERSION = '0.14'; sub _croak { require Carp; Carp::croak(@_); } sub _load_classes { my $self = shift; my $dbh = DBI->connect(@{$self->_datasource}) or _croak($DBI::errstr); foreach my $table($dbh->tables( { 'TABLE_TYPE' => 'TABLE' } ) ) { my $sth = $dbh->prepare(<<"SQL"); SELECT c.COLNAME FROM SYSCAT.KEYCOLUSE kc, SYSCAT.TABCONST tc, SYSCAT.COLUMNS c WHERE kc.CONSTNAME=tc.CONSTNAME AND kc.TABSCHEMA=tc.TABSCHEMA AND kc.TABNAME=tc.TABNAME AND kc.TABSCHEMA=c.TABSCHEMA AND kc.TABNAME=c.TABNAME AND kc.COLNAME=c.COLNAME AND kc.TABSCHEMA = ? AND kc.TABNAME = ? AND tc.TYPE = 'P' ORDER BY kc.COLSEQ SQL my ($tabschema,$tbl) = split '\.', $table; $sth->execute( uc($tabschema), uc($tbl) ); my $primaries = $sth->fetchall_arrayref; $sth->finish; my ( @primary ); map { push @primary, $_ } @$primaries; if ( @primary ) { my $class = $self->_table2class(lc($table)); no strict 'refs'; @{"$class\::ISA"} = qw(Class::DBI::DB2); $class->set_db(Main => @{$self->_datasource}); my $alias = $table; $alias =~ s/\./_/; $class->set_up_table(lc($table),$alias); $self->{CLASSES}->{$table} = $class; } } $dbh->disconnect; } 1; __END__