Calling Object Methods

A database object can have two kinds of methods: static or member. The first, static, is just like a static Java method, in that it can be called by using its type name, just as a static Java method is called using its class name. For example, type person_typ, which has a static method get_id( ) that returns the next person_id sequence value, can be called as a stored procedure:

person_typ.get_id(  )

To execute get_id( ) , use a callable statement, which we covered in Chapter 13. Although using a callable statement to execute a static method is pretty straightforward, calling member methods presents a new problem.

Member methods -- just like their public, nonstatic Java counterparts -- must be associated with an instance of the object in order to be executed. But how do you get an instance of the object in the database to execute its member method? Your first guess might be to use a reference, which makes pretty good sense to me, too. But the functionality to execute a member method with a reference doesn’t exist yet. Instead, use the object value returned from the database value( ) function or the proprietary oracle.sql.REF object’s getValue( ) method. In this case, that object value is a Struct, and you pass that Struct as the first argument of the member function or procedure. Pass it as the first argument even though it is not a visibly defined parameter. The syntax is:

               user_defined_type.method_name(
 self in user_defined_type
[, parameter_1 IN data_type ...

Get Java Programming with Oracle JDBC 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.