Determining Presence or Absence of a Result Set
Problem
You just executed a query obtained from an external source, so you’re not sure whether it returned a result set.
Solution
Check the column count in the metadata. If the count is zero, there is no result set.
Discussion
If you write an application that accepts query strings from an
external source such as a file or a user entering text at the
keyboard, you may not necessarily know whether or not any given query
returns a result set. That’s an important
distinction, because queries that return a result set are processed
differently than those that do not. One way to tell the difference is
to check the metadata value that indicates the column count after
executing the query. Assuming that no error occurred, a column count
of zero indicates that the query was an INSERT,
UPDATE, or other statement that returns no result
set. A nonzero value indicates the presence of a result set and you
can go ahead and fetch the rows. This technique works to distinguish
SELECT from non-SELECT queries,
even for SELECT queries that return an empty
result set. (An empty result is different than no result. The former
returns no rows, but the column count is still correct; the latter
has no columns at all.)
Some APIs provide other ways to distinguish query types than checking
the column count. In JDBC, you can issue arbitrary queries using the
execute( ) method, which directly indicates whether there is a result set by returning true or false. In Python, ...