- All Known Subinterfaces:
ResultSetProvider.Large
SET OF a complex type. This
interface is appropriate when the function will be generating the returned
set on the fly; if it will have a ResultSet obtained from a query,
it should just return ResultSetHandle instead. Functions that
return SET OF a simple type should simply return an
Iterator.
For a function declared to return SETOF RECORD rather than a specific
complex type known in advance, the receiver argument to
assignRowValues can be queried to
learn the number, names, and types of columns expected by the caller.
- Author:
- Thomas Hallgren
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceVersion ofResultSetProviderwhere theassignRowValuesmethod accepting alongrow count must be implemented, and theintversion defaults to using it. -
Method Summary
Modifier and TypeMethodDescriptionbooleanassignRowValues(ResultSet receiver, int currentRow) Older version where currentRow is limited to the range ofint.default booleanassignRowValues(ResultSet receiver, long currentRow) This method is called once for each row that should be returned from a procedure that returns a set of rows.voidclose()Called after the last row has returned or when the query evaluator decides that it does not need any more rows.
-
Method Details
-
assignRowValues
This method is called once for each row that should be returned from a procedure that returns a set of rows. The receiver is aSingleRowWriterinstance that is used to capture the data for the row.If the return type is
RECORDrather than a specific complex type, SQL requires a column definition list to follow any use of the function in a query. TheResultSetMetaDataofreceivercan be used here to learn the number, names, and types of the columns expected by the caller. (It can also be used in the case of a specific complex type, but in that case the names and types are probably already known.)This default implementation calls
assignRowValues(ResultSet,int), or throws anSQLExceptionwith SQLState 54000 (program limit exceeded) if the row number exceedsInteger.MAX_VALUE.- Parameters:
receiver- Receiver of values for the given row.currentRow- Row number, zero on the first call, incremented by one on each subsequent call.- Returns:
trueif a new row was provided,falseif not (end of data).- Throws:
SQLException
-
assignRowValues
Older version where currentRow is limited to the range ofint.- Throws:
SQLException
-
close
Called after the last row has returned or when the query evaluator decides that it does not need any more rows.- Throws:
SQLException
-