Oracle8i JDBC Developer's Guide and Reference Release 3 (8.1.7) Part Number A83724-01 |
Library | Service | Contents | Index

## Binding IN Parameters

To bind a PL/SQL index-by table parameter in the `IN` parameter mode, use the `setPlsqlIndexTable()` method defined in the `OraclePreparedStatement` and `OracleCallableStatement` classes.

    synchronized public void setPlsqlIndexTable
       (int paramIndex, Object arrayData, int maxLen, int curLen, int elemSqlType,
        int elemMaxLen) throws SQLException

Note: This method applies to the `IN OUT` parameter mode as well.

Table 11-2 describes the arguments of the `setPlsqlIndexTable()` method.

##### Table 11-2 Arguments of the setPlsqlIndexTable () Method

Argument | Description
--- | ---
`int paramIndex` | This argument indicates the parameter position within the statement.
`Object arrayData` | This argument is an array of values to be bound to the PL/SQL index-by table parameter. The value is of type `java.lang.Object`, and the value can be a Java primitive type array such as `int[]` or a Java object array such as `BigDecimal[].`
`int maxLen` | This argument specifies the maximum table length of the index-by table bind value which defines the maximum possible `curLen` for batch updates. For standalone binds, `maxLen` should use the same value as `curLen.`
`int curLen` | This argument specifies the actual size of the index-by table bind value in `arrayData`. If the `curLen` value is smaller than the size of `arrayData`, only the `curLen` number of table elements is passed to the database. If the `curLen` value is larger than the size of `arrayData`, the entire `arrayData` is sent to the database.
`int elemSqlType` | This argument specifies the index-by table element type based on the values defined in the `OracleTypes` class.
`int elemMaxLen` | This argument specifies the index-table element maximum length in case the element type is `CHAR`, `VARCHAR`, or `RAW`. This value is ignored for other types.

The following code example uses the `setPlsqlIndexTable()` method to bind an index-by table as an `IN` parameter:

    // Prepare the statement
    OracleCallableStatement procin = (OracleCallableStatement)
       conn.prepareCall ("begin procin (?); end;");

    // index-by table bind value
    int[] values = { 1, 2, 3 };

    // maximum length of the index-by table bind value. This
    // value defines the maximum possible "currentLen" for batch
    // updates. For standalone binds, "maxLen" should be the
    // same as "currentLen".
    int maxLen = values.length;

    // actual size of the index-by table bind value
    int currentLen = values.length;

    // index-by table element type
    int elemSqlType = OracleTypes.NUMBER;

    // index-by table element length in case the element type
    // is CHAR, VARCHAR or RAW. This value is ignored for other
    // types.
    int elemMaxLen = 0;

    // set the value
    procin.setPlsqlIndexTable (1, values,
                               maxLen, currentLen,
                               elemSqlType, elemMaxLen);

    // execute the call
    procin.execute ();

| Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
Library | Service | Contents | Index