eval { my $func = $dbh->prepare(q{ BEGIN :curs := sp_du; END; }); # must specify the ora_type of ORA_RSET # so code knows it is a cursor $func->bind_param_inout(":curs ", \$result, 0, { ora_type => ORA_RSET}); $func->execute; $func->finish; }; if( $@ ) { warn "Execution of stored procedure failed use:\n\t$DBI::errstr\n$@"; } while(my $hashRef = $result->fetchrow_hashref) { foreach(keys %$hashRef) { print "$_ is $hashRef->{$_}\n"; } } $result->finish;