Named iterators

To declare a named iterator class, use the following syntax:

#sql [modifiers] iterator class_name 
        [implements interface_class [, interface_class . . .]] 
        [with constant_name = value [,constant_name = value . . .]]
        (java_type 
                     column_name [, java_type 
                     column_name ...]);

where:

modifiers

Optional Java class modifier: public, private, protected, static.

class_name

Name for the iterator class.

interface_class

The interface(s) implemented by the iterator class. If the iterator implements the sqlj.runtime.Scrollable class (available with Oracle 8.1.7 and later), the iterator will support the following navigation functions:

  • previous( )

  • first( )

  • last( )

  • absolute(row_number)

  • relative(relative_number): number of rows relative to current row

  • afterLast( )

  • beforeFirst( )

and these other functions:

  • setFetchDirection(direction), where direction can be a constant in sqlj.runtime.ResultSetIterator of FETCH_FORWARD, FETCH_REVERSE, or FETCH_UNKNOWN as a hint

  • getFetchDirection( )

  • isFirst( )

  • isLast( )

  • isBeforeFirst( )

  • isAfterLast( )

constant_name

Name of a constant that can be accessed in the iterator.

java_type

Java datatype of an iterator column.

column_name

Name of the column in the iterator. If this name is different from the column name, you should use AS to identify the iterator column.

Once you have declared a named iterator, you can select into it with this syntax:

#sql iterator_name = {sql_statement};

When the named iterator has been populated, you can move through the rows in the iterator by using ...

Get Oracle in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.