Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Variable Arg Lists to PreparedStatements

Variable Arg Lists to PreparedStatements

From: Robert Brown <robertbrown1971_at_yahoo.com>
Date: 20 Sep 2004 09:52:35 -0700
Message-ID: <240a4d09.0409200852.1711430a@posting.google.com>


Is there a way to use PreparedStatements (or bind variables) with SQL statements that have a variable number of arguments. For example, I have an array of IDs for employees of a certain type and I want to have a PreparedStatement retrieve all of them in a single SQL call.

SELECT FROM employees WHERE employee_type = ? employee_id in (?,?,?,...,?)

It seems at least in Java that PreparedStatements can only take a fixed number of arguments?

   PreparedStatement pstmt = con.prepareStatement("SELECT FROM employees WHERE employee_type = ? AND employee_id = ?");

   pstmt.setLong(1, employeeType);
   pstmt.setInt(2, employeeID);

Is there a way to have a PreparedStatement for a SQL "IN" clause or similar variable argument length clauses? I heard that Temp tables is one option where you first insert your array of IDs into a Temp table and then use a JOIN. But that seems to defeat the purpose as it requires multiple queries. Is there anyway to something like this:

   int[] employeeIDArray = getEmployees();    PreparedStatement pstmt = con.prepareStatement("SELECT FROM employees WHERE employee_type = ? AND employee_id IN (?)");

   pstmt.setLong(1, employeeType);
   pstmt.setIntArray(2, employeeIDArray); <--- How can I do this?

Thanks,

Received on Mon Sep 20 2004 - 11:52:35 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US