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.13'; 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'} ) { foreach my $table($dbh->tables) { if ($table !~ /SYSCAT/ && $table !~ /SYSIBM/ && $table !~ /SYSSTAT/) { 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($table); no strict 'refs'; @{"$class\::ISA"} = qw(Class::DBI::DB2); $class->set_db(Main => @{$self->_datasource}); $class->set_up_table($table); $self->{CLASSES}->{$table} = $class; } } } $dbh->disconnect; } 1; __END__ =head1 NAME Class::DBI::Loader::DB2 - Class::DBI::Loader DB2 implementation. =head1 SYNOPSIS 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); =head1 DESCRIPTION please see L =head1 AUTHOR Mark Ferris Emark.ferris@geac.comE =head1 COPYRIGHT 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. =head1 SEE ALSO L =cut