Author image Jeff Klein
and 1 contributors


DBIx::Fun - access database stored procedures as methods


    use DBI;
    use DBIx::Fun;
    my $dbh = DBI->connect('dbi:Oracle:orcl', 'scott', 'tiger');
    my $fun = DBIx::Fun->context($dbh);
    # print 5 random numbers from the database
    $fun->dbms_random->initialize( 123 );
    for my $i ( 1 .. 5 ) {
        printf "%d %d\n", $i, $fun->dbms_random->random;


This module allow Perl programs to access database stored procedures as if they were methods on an object.


context( $dbh )

Creates a DBI::Fun subclass matching the driver of $dbh, e.g., DBD::Oracle => DBIx::Fun::Oracle.

    # call as a class method
    my $fun = DBIx::Fun->context($dbh);

Privately used as an object method to create child contexts.

fun( $dbh )

Returns a context for $dbh, cached in $dbh. Exportable as a function.

   use DBIx::Fun 'fun';

   print fun($dbh)->sysdate, "\n";
   sleep 60;

   # function signature cached in $dbh 
   print fun($dbh)->sysdate, "\n";


Not an actual function. Importing 'auto' will load fun() into the DBI::db package, exposing it as a method on database handles.

   use DBIx::Fun 'auto';

   print $dbh->fun->sysdate, "\n";



Accessor for the underlying database handle.

commit, rollback, disconnect

Convenience methods on the underlying database handle.


_call($name, [ @args ] )

Call stored proc $name with arguments @args.

$fun->_call() can be used to call a stored procedure that contains characters not allowed in a Perl identifier, or that clashes with a method defined in Perl.