The result_names()
predefines variables to be used in a result set to follow.  The variables must 
be previously declared, from which the column data types are ascertained.  
This assigns the meta data but does not send any results.  The 
result() function sends its parameters as a single row 
of results.  These parameters should be compatible with those in the previous 
result_names().  The end_results() 
function can be used to separate multiple result sets.  The 
result_names() can then be used to alter 
the structure of the next result set.The result_names() call can be omitted if 
the application already knows what columns and their types are to be returned.