This example uses the asynchronous query commands described in Section 4.4, “Asynchronous Query Processing Commands”. It shows how a query could be sent to the database, and the application could continue processing without blocking while waiting for the results to come back. It also shows part of how a Cancel button might be implemented. Note: this is not a complete script.
Example 5.18. Asynchronous Queries
pg_sendquery $conn "SELECT * FROM tables... WHERE conditions ORDER BY ..."
# Wait for not-busy condition:
while {[pg_isbusy $conn]} {
... Do something here, like check for user input and update the interface...
... Good idea to insert a delay so it doesn't busy-wait ...
... Check for cancel button ...
if {$user_pressed_cancel_button} break
}
# Did the user hit the Cancel button? If so, try to cancel the query.
if {$user_pressed_cancel_button} {
pg_cancelrequest $conn
}
# Fetch results until it there are none left (even if canceled):
while {[set res [pg_getresult $conn]] != ""} {
if {!$user_pressed_cancel_button} {
... do something with the query result $res ...
}
pg_result $res -clear
}
This version of the manual was produced for the
Pgtcl-ng Sourceforge project web service site, which requires the logo on each
page.
To download a logo-free copy of the manual, see the
Pgtcl-ng project
downloads area.