传递数据库中的数字列的整数数组

时间:2016-04-12 10:42:09

标签: java oracle

我的查询类似于 SELECT * from TableName WHERE id= ?

for id字段我想传递一组id Database中的数字字段,

我创建了Number Array类型i数据库,当我将Array传递给我准备好的语句时,我得到了以下错误。

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * from Tablename WHERE id= ?]; nested exception is java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent datatypes: expected NUMBER got schema.app_id

    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:95)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    at org.springfra

1 个答案:

答案 0 :(得分:0)

您需要在查询中使用table collection expression

  

table_collection_expression允许您通知Oracle,应将 collection_expression 的值视为表,以便进行查询和DML操作。 collection_expression 可以是子查询,列,函数或集合构造函数。无论其形式如何,它都必须返回一个集合值 - 即类型为嵌套表或varray的值。提取集合元素的过程称为集合取消。

因此,您需要将传递的集合(数组)转换为in()子句中子查询中的表:

SELECT * from TableName WHERE in (SELECT column_value FROM TABLE(?))

或者加入:

SELECT t.*
FROM TABLE(?) i
JOIN TableName t
ON t.id = i.column_value