Database Reference
In-Depth Information
Chapter 4. Returning Structured Data
In the previous chapter, we have seen functions that return single values. They re-
turned either a "scalar", simple types such as integer, text, or data, or a more complex
type similar to a row in the database table. In this chapter, we will expand these con-
cepts and show how you can return your data to the client in much more powerful
ways.
In this chapter, we will examine multiple rows of both scalar types, as well as learn
about several ways of defining complex types for function return values.
We will also examine differences between SETOF scalars, or rows and arrays of
the same. Later, we will also examine returning CURSORs, which are kind of "lazy"
tables, that is something that can be used to get a set of rows but may not yet have
actually evaluated or fetched the rows. As the modern world is not about rigidly table-
structured data, we will also examine ways of dealing with more complex data struc-
tures, both predefined and dynamically created.
But let's start from a simple example and then add more features and variants as we
go.
Sets and arrays
Rowsets are very similar to arrays in many ways, but they mainly differ in how you
can use them. For most data manipulations, you want to use rowsets, as the SQL
language is designed to deal with them. Arrays, however, are most useful for static
storage. They are more complicated for client applications to use than rowsets, with
usability features missing such as no simple and straightforward built-in way to iterate
over them.
Search WWH ::




Custom Search