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
}