我放入准备好的语句的查询是:
select *
from ( select seq, audit_ts, message_type
from log2
where 1 = 1
and message_type in ('SOURCE', 'DEST')
order by seq desc )
where ROWNUM <= ?
当我在我的应用程序中运行查询时,我得到:
java.sql.SQLSyntaxErrorException: ORA-00907: 缺少右括号
编辑:这是执行查询的java。我正在尝试返回一组搜索结果,因此前缀包含 SELECT 语句,然后我可以有任意数量的后缀(在此摘录“AUDIT_LOG_SEARCH2”中),它们是基于用户搜索的参数化 WHERE 子句:
StringBuffer query = new StringBuffer(300);
query.append(dbAdapter.getQuery("AUDIT_LOG_ENTRY_PREFIX"));
query.append(dbAdapter.getQuery("AUDIT_LOG_SEARCH2"));
// Insert parameters to complete the sql prepared statement
PreparedStatement ps = _dbConn.prepareStatement(query.toString());
ResultSet rs = ps.executeQuery();
但是当我在 SQL Developer 中单独运行时,查询运行良好。该查询最初是为 Postgres 创建的,然后为 Oracle 更新。有小费吗?