2012-03-20 2 views
1

PreparedStatement을 사용하여 SQL 쿼리에서 IN 절에 대해 여러 매개 변수를 설정하는 방법을 알아 내려고했습니다.다중 매개 변수 "IN"prepared statement

예를 들어,이 SQL 문에서 나는 ?의 무한 수를 가질 것입니다. 나는 내 위의 SQL 문에 적용하는 방법을 알아낼 수 없습니다 그러나

select * from ifs_db where img_hub = ? and country IN (multiple ?) 

나는 PreparedStatement IN clause alternatives?

이것에 대해 읽었습니다.

+0

당신은 다른 질문의 링크를 봤어? http://www.javaranch.com/journal/200510/Journal200510.jsp#a2 –

+0

예 내가 한 것 ... 일부 검색 결과를 보냈습니다 – toink

+0

"id"또는 int를 매개 변수로 사용했습니다. 매개 변수가 문자열이면 .... 적용됩니다. 감사합니다, – toink

답변

1

Sormula 어떤 데이터를 작동합니다

당신의 국가는 '# 미국 # 영국 # DE # NL 번호'와 같은 구분 된 목록에서 표준 ISO 코드는 같은 다소 단순한 구조를 사용할 수있는 경우 유형 (심지어 사용자 정의 유형). This example은 단순함을 위해 int를 사용합니다.

ArrayList<Integer> partNumbers = new ArrayList<Integer>(); 
partNumbers.add(999); 
partNumbers.add(777); 
partNumbers.add(1234); 

// set up 
Database database = new Database(getConnection()); 
Table<Inventory> inventoryTable = database.getTable(Inventory.class); 

ArrayListSelectOperation<Inventory> operation = 
    new ArrayListSelectOperation<Inventory>(inventoryTable, "partNumberIn"); 

// show results 
for (Inventory inventory: operation.selectAll(partNumbers)) 
    System.out.println(inventory.getPartNumber()); 
2

이 문제를 처리하는 표준 방법은 없습니다.

SQL Server에서는 저장 프로 시저에서 테이블 반환 매개 변수를 사용하고 테이블의 국가를 전달하여 조인에서 사용할 수 있습니다.

쉼표로 구분 된 목록이 전달 된 다음 함수에 의해 테이블로 구문 분석 된 다음 조인에 사용되는 경우도 있습니다.

select * from ifs_db where img_hub = ? and ? LIKE '%#' + country + '#%' 
+0

도 참조하십시오. 오라클 : CallableStatement에서 배열 IN 매개 변수 및 커서 OUT 매개 변수 refcursor를 형성하기 위해 조인을하는 저장된 proc. – Glenn

0
You could use setArray method as mentioned in the javadoc below: 

http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#setArray(int, java.sql.Array) 

Code: 
PreparedStatement statement = connection.prepareStatement("Select * from test where field in (?)"); 
Array array = statement.getConnection().createArrayOf("VARCHAR", new Object[]{"AA1", "BB2","CC3"}); 
statement.setArray(1, array); 
ResultSet rs = statement.executeQuery();