我的查询类似于 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
答案 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