pgtcl is a Tcl package for client programs to interface with PostgreSQL servers. It makes most of the functionality of libpq available to Tcl scripts.
This package was originally written by Jolly Chen.
Table 3-1 gives an overview over the commands available in pgtcl. These commands are described further on subsequent pages.
Table 3-1. pgtcl Commands
Command | Description |
---|---|
pg_connect | opens a connection to the backend server |
pg_disconnect | closes a connection |
pg_conndefaults | get connection options and their defaults |
pg_exec | send a query to the backend |
pg_result | manipulate the results of a query |
pg_select | loop over the result of a SELECT statement |
pg_execute | send a query and optionally loop over the results |
pg_listen | establish a callback for NOTIFY messages |
pg_on_connection_loss | establish a callback for unexpected connection loss |
pg_lo_creat | create a large object |
pg_lo_open | open a large object |
pg_lo_close | close a large object |
pg_lo_read | read a large object |
pg_lo_write | write a large object |
pg_lo_lseek | seek to a position in a large object |
pg_lo_tell | return the current seek position of a large object |
pg_lo_unlink | delete a large object |
pg_lo_import | import a Unix file into a large object |
pg_lo_export | export a large object into a Unix file |
The pg_lo_*
routines are interfaces to the
large object features of PostgreSQL.
The functions are designed to mimic the analogous file system
functions in the standard Unix file system interface. The
pg_lo_*
routines should be used within a
BEGIN/COMMIT transaction
block because the file descriptor returned by
pg_lo_open
is only valid for the current
transaction. pg_lo_import
and
pg_lo_export
must be used
in a BEGIN/COMMIT transaction
block.
Example 3-1 shows a small example of how to use the routines.
Example 3-1. pgtcl Example Program
# getDBs : # get the names of all the databases at a given host and port number # with the defaults being the localhost and port 5432 # return them in alphabetical order proc getDBs { {host "localhost"} {port "5432"} } { # datnames is the list to be result set conn [pg_connect template1 -host $host -port $port] set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"] set ntups [pg_result $res -numTuples] for {set i 0} {$i < $ntups} {incr i} { lappend datnames [pg_result $res -getTuple $i] } pg_result $res -clear pg_disconnect $conn return $datnames }