in reply to Class::DBI::Oracle and views

Class::DBI::View is for simulating views, not for working with real ones. I can't tell quite what you're doing from your post. How about showing us the code for TestPkg::View and the script you called it from?

Replies are listed 'Best First'.
Re: Class::DBI::Oracle and views
by janjan (Beadle) on Sep 28, 2003 at 22:03 UTC
    Sure, and thank you. Here's test.pl:
    #!/usr/bin/perl -w use strict; require Modules.pl; my @students = TestPkg::View->retrieve_all; # returns the same error as search() would warn Dumper(\@students);
    And here's code from Modules.pl -- I'm not using Class::DBI::View in this version of the code, obviously. (Relevant info: this is a view containing enrollment data for a course.)
    package TestPkg::DBI; use base 'Class::DBI::Oracle'; TestPkg::DBI->set_db('Main', 'dbi:Oracle:devdv', 'username', 'password +'); package TestPkg::View; use base TestPkg::DBI; __PACKAGE__->table('course_enrollment'); __PACKAGE__->columns( All => qw/id username year term name_first name_ +last/ ); # and just for kicks, here's another package that's working just fine # it points to a table, not a view package TestPkg::Permissions; use base TestPkg::DBI; __PACKAGE__->table('permissions'); __PACKAGE__->columns( All => qw/id student_id access_level/);
    The view is just generated from a command like
    CREATE OR REPLACE VIEW course_enrollment AS SELECT [...]
    (it's of course much longer and nastier -- but I can select things from it on the command line just fine.)
      Well, I don't see anything wrong here. It's probably a bad idea to keep all of your packages in Modules.pl (as opposed to separate files) and there is no reason to use Class::DBI::Oracle if you're not using the set_up_table call, but neither of those should break it.

      Can you access this view from DBI when you don't go through Class::DBI?

        Yeah, I know I should keep 'em in separate files -- I'm just putting all the packages in one place just for testing purposes. Also, I wanted to use Class::DBI::Oracle for the sequencing -- unless there's a better way? I'm still pretty new to the Class::DBI stuff.

        And yes, I can access the view just fine when I'm using plain ol' DBI. So frustrating! Do you think it might have something to do with the older version of Class::DBI that I'm using?