NAME

FP::DBI - DBI with results as lazy lists

SYNOPSIS

    use FP::DBI;

    $dbh = FP::DBI->connect($data_source, $username, $auth, \%attr);

    # same as `DBI`:
    ..
    $sth = $dbh->prepare($statement);
    ..
    $rv = $sth->execute;

    # then:
    my $s= $sth->row_stream;    # purearrays blessed to FP::DBI::Row
    # or
    #my $s= $sth->array_stream; # arrays
    # or
    #my $s= $sth->hash_stream;  # hashes

    use PXML::XHTML;
    TABLE
      (TH($s->first->map (*TD)),
       $s->rest->take (10)->map (sub {TR($_[0]->map (*TD))}))

DESCRIPTION

Get rows as items in a lazy linked list (functional stream).

NOTE: `DBI` is designed so that when running another `execute` on the same statement handle, fetching returns rows for the new execute; this means, a new execute makes it impossible to retrieve further results from the previous one. Thus if a result stream isn't fully used before a new `execute` or a different result request is being made, then the original stream can't be further evaluated anymore; to prevent this from happening, an interlock mechanism is built in that throws an error in this case.

SEE ALSO

DBI, FP::Stream

NOTE

This is alpha software! Read the status section in the package README or on the website.