NAME

DBIx::DataModel::Statement::Oracle - Statement for interacting with DBD::Oracle in Oracle versions prior to 12c

SYNOPSIS

DBIx::DataModel->Schema("MySchema",
   statement_class => "DBIx::DataModel::Statement::Oracle",
);

my $rows = $source->select(
  ...,
  -limit  => 50,
  -offset => 200,
);

DESCRIPTION

This subclass redefines some parent methods from DBIx::DataModel::Statement in order to take advantage of "Scrollable Cursor Methods" in DBD::Oracle.

This was interesting in ancient Oracle databases, for applications that needed to do pagination within result sets. In versions prior to 12c, Oracle had no support for LIMIT/OFFSET in SQL, so this subclass uses some special methods of the Oracle driver to jump to a specific row within a resultset, and then extract a limited number of rows. The API is exactly the same as other, regular DBIx::DataModel implementations.

This mechanism will also work in Oracle versions 12c or superior, but it is no longer needed in recent Oracle databases; instead, activate the Oracle12c dialect in SQL::Abstract::More, like this :

DBIx::DataModel->Schema("MySchema",
   sql_abstract_args => [sql_dialect => "Oracle12c"],
);

AUTHOR

Laurent Dami, <laurent.dami AT etat ge ch>, April 2012.

COPYRIGHT AND LICENSE

Copyright 2011 by Laurent Dami.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.