JDBC - java.sql.SQLException: ORA-00933: SQL 命令未正确结束



我正在尝试通过JDBC在Oracle DB中执行以下查询,但它抛出了一个异常。例外情况是:

java.sql.SQLException: ORA-00933: SQL command not properly ended

请建议需要更改的内容?

String questionQuery = "SELECT PCN_SURVEY_DEFINITION.ID, PCN_SURVEY_DEFINITION.NAME, PCN_QUESTIONS.ID, PCN_QUESTIONS.SURVEY_ID, PCN_QUESTIONS.LABEL, "
+ "PCN_QUESTIONS.TYPE, PCN_QUESTIONS.REQUIRED, PCN_QUESTIONS.COMMENTS, PCN_QUESTIONS.DISPLAY_ORDER "
+ "FROM PCN_SURVEY_DEFINITION, PCN_QUESTIONS "
+ "WHERE PCN_SURVEY_DEFINITION.ID = PCN_QUESTIONS.SURVEY_ID "
+ "AND PCN_SURVEY_DEFINITION.NAME=? "
+ "ORDER BY PCN_QUESTIONS.DISPLAY_ORDER ASC"; 

更正 WHERE 子句中的条件,并正确检查引号(")从哪里开始和在哪里结束。

"WHERE PCN_SURVEY_DEFINITION.ID = " + PCN_QUESTIONS.SURVEY_ID + " AND PCN_SURVEY_DEFINITION.NAME=? " + "ORDER BY PCN_QUESTIONS.DISPLAY_ORDER ASC";

你用问号做什么?也许您打算在此处放置另一个表的列名?排序前的那个?或者你之后使用准备好的陈述?出于测试目的,请尝试暂时删除此条件:"AND PCN_SURVEY_DEFINITION.NAME=? "

"WHERE PCN_SURVEY_DEFINITION.ID = PCN_QUESTIONS.SURVEY_ID " + "AND PCN_SURVEY_DEFINITION.NAME=? " + "ORDER BY 

Oracle 不支持问号"?"。对于变量绑定,预言机使用":name"或":1">

https://docs.oracle.com/cd/B10501_01/appdev.920/a96584/oci05bnd.htm

我有类似的东西,不得不在我的application.properties文件中添加以下属性(因为我使用的是 Spring Boot),这为我解决了这个问题,而无需更改任何 SQL

spring.jpa.database=oracle

最新更新