The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DBD-Pg - Access to PostgreSQL Databases

SYNOPSIS

  use DBD::Pg;

DESCRIPTION

DBD::Pg is an extension to Perl which allows access to PostgreSQL databases. It is built on top of the standard DBI extension and implements some of the methods that DBI defines.

LOADING THE MODULE

As for any DBI driver you need to load the DBI module:

        use DBI;

CONNECTING TO A DATABASE

To connect to a database, you can specify:

        $dbh = $drh->connect($database, '', '', 'Pg');

The first parameter specifies the database. The second and third parameter (username and password) are not supported by PostgreSQL. The last parameter specifies the driver to be used. This returns a database handle which can be used for subsequent database interactions.

SIMPLE STATEMENTS

Given a database connection, you can execute an arbitrary statement using:

        $dbh->do($stmt);

The statement must not be a SELECT statement (except SELECT...INTO TABLE).

PREPARING AND EXECUTING STATEMENTS

You can prepare a statement for multiple uses, and you can do this for SELECT statements which return data as well as for statements which return no data. You create a statement handle using:

        $sth = $dbh->prepare($stmt);

Once the statement is prepared, you can execute it:

        $numrows = $sth->execute;

For statements which return data, $numrows is the number of selected rows. You can also discover what the returned column names, types, sizes are:

        @name = @{$sth->{'NAME'}};      # Column names
        @type = @{$sth->{'TYPE'}};      # Data types
        @size = @{$sth->{'SIZE'}};      # Numeric size

If the statement returns data, you can retrieve the values in the following way:

        while (@row = $sth->fetchrow) {

        }

When you have fetched as many rows as required, you close the statement handle using:

        $sth->finish;

This frees the statement, but it does not free the related data structures. This is done when you destroy (undef) the statement handle:

        undef $sth;

DISCONNECTING FROM A DATABASE

You can disconnect from the database:

        $dbh->disconnect;

Note that this does not destroy the database handle. You need to do an explicit 'undef $dbh' to destroy the handle.

TRANSACTIONS

PostgreSQL supports simple transactions. They can not be named and they can not be nested ! You start a transaction with:

        $dbh->do('begin');

The transaction can be aborted or finished with:

        $dbh->do('abort');
        $dbh->do('end');

Note that the following functions can also be used:

        $dbh->rollback;
        $dbh->commit;

CURSORS

Although PostgreSQL has a cursor concept, it has not been used in the current implementation. Cursors in PostgreSQL can only be used inside a transaction block. Because transactions in PostgreSQL can not be nested, this would have implied the restriction, not to use any nested SELECT statements.

DYANMIC ATTRIBUTES

The following attributes are supported:

        $DBI::err       # error message

        $DBI::errstr    # error code

        $DBI::rows      # row count

KNOWN RESTRICTIONS

  • disconnect_all is not supported.

  • $DBI::state is not supported

  • Some driver attributes cannot be queried.

  • Blobs are not supported.

AUTHORS

  • DBI and DBD-Oracle by Tim Bunce (Tim.Bunce@ig.co.uk)

  • DBD-Pg by Edmund Mergl (E.Mergl@bawue.de)

     Major parts of this package have been copied from DBD-Oracle.

SEE ALSO

DBI(1).

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 277:

'=item' outside of any '=over'

Around line 290:

You forgot a '=back' before '=head1'

Around line 292:

'=item' outside of any '=over'

Around line 301:

You forgot a '=back' before '=head1'