ODBC doesn't appear to allow for multiple cursors on the same 
result-set.5Is this right? 
This would imply there can only be one active odbc_execute/3 
(i.e. with a choice-point) on a prepared statement. Suppose we have a 
table age (name char(25), age integer) bound to the 
predicate age/2 we cannot write the code 
below without special precautions. The ODBC interface therefore creates 
a clone of a statement if it discovers the statement is being executed, 
which is discarded after the statement is finished.6The 
code is prepared to maintain a cache of statements. Practice should tell 
us whether it is worthwhile activating this.
same_age(X, Y) :-
        age(X, AgeX),
        age(Y, AgeY),
        AgeX = AgeY.