No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area that this question is:
-- points to jpk
Please leave any comments here within the next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
sudhakar_koundinya
EE Cleanup Volunteer
---------------------
If you feel that your question was not properly addressed, or that none of the comments received were appropriate answers, please post your concern in THIS thread.
Main Topics
Browse All Topics





by: jpkPosted on 2001-06-30 at 22:32:41ID: 6241866
What you are looking for are the java.sql.Array and oracle.sql.Array classes.
er(new oracle.jdbc.driver.OracleD river()); n ("jdbc:oracle:oci8:@", riptor("NU M_VARRAY", conn);
ps).setARR AY (1, newArray);
RRAY (1);
The following example, from the Oracle 8i JDBC Developers Guide and Reference should explain the process:
Weakly Typed Arrays?ArrayExample.java
This sample program uses JDBC to create a table with a VARRAY. It inserts a new
array object into the table, then prints the contents of the table. For more
information on arrays, see Chapter 10, "Working with Oracle Collections".
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.oracore.Util;
import oracle.jdbc.driver.*;
import java.math.BigDecimal;
public class ArrayExample
{
public static void main (String args[])
throws Exception
{
// Register the Oracle JDBC driver
DriverManager.registerDriv
// Connect to the database
// You need to put your database name after the @ sign in
// the connection URL.
//
// The sample retrieves an varray of type "NUM_VARRAY",
// materializes the object as an object of type ARRAY.
// A new ARRAY is then inserted into the database.
Connection conn =
DriverManager.getConnectio
"scott", "tiger");
// It?s faster when auto commit is off
conn.setAutoCommit (false);
// Create a Statement
Statement stmt = conn.createStatement ();
try
{
stmt.execute ("DROP TABLE varray_table");
stmt.execute ("DROP TYPE num_varray");
}
catch (SQLException e)
{
// the above drop statements will throw exceptions
// if the types and tables did not exist before. Just ingore it.
}
stmt.execute ("CREATE TYPE num_varray AS VARRAY(10) OF NUMBER(12, 2)");
stmt.execute ("CREATE TABLE varray_table (col1 num_varray)");
stmt.execute ("INSERT INTO varray_table VALUES (num_varray(100, 200))");
ResultSet rs = stmt.executeQuery("SELECT * FROM varray_table");
showResultSet (rs);
//now insert a new row
// create a new ARRAY object
int elements[] = { 300, 400, 500, 600 };
ArrayDescriptor desc = ArrayDescriptor.createDesc
ARRAY newArray = new ARRAY(desc, conn, elements);
PreparedStatement ps =
conn.prepareStatement ("insert into varray_table values (?)");
((OraclePreparedStatement)
ps.execute ();
rs = stmt.executeQuery("SELECT * FROM varray_table");
showResultSet (rs);
// Close all the resources
rs.close();
ps.close();
stmt.close();
conn.close();
}
public static void showResultSet (ResultSet rs)
throws SQLException
{
int line = 0;
while (rs.next())
{
line++;
System.out.println("Row "+line+" : ");
ARRAY array = ((OracleResultSet)rs).getA
System.out.println ("Array is of type "+array.getSQLTypeName());
System.out.println
("Array element is of typecode "+array.getBaseType());
System.out.println ("Array is of length "+array.length());
// get Array elements
BigDecimal[] values = (BigDecimal[]) array.getArray();
for (int i=0; i<values.length; i++)
{
BigDecimal value = (BigDecimal) values[i];
System.out.println(">> index "+i+" = "+value.intValue());
}
}
}
}
Hope this helps.