Methods, systems, and computer program products for accessing data where
the data store provider is abstracted from both the data manipulation
language used to access the data and the schema that describes the data.
A received request structured in accordance with the data manipulation
language is represented in an intermediate form. From the intermediate
representation, a native request for any of one or more data store
providers may be produced. Before being returned to the requestor, a
native response from data store provider may be formatted so that it is
structured in accordance with the data manipulation language used for the
request. A given request received by one computer system may cause a
procedure to be generated for accessing the data store provider. When a
later request is received by second computer system, the previously
generated stored procedure may be reused if applicable.