【发布时间】:2014-08-22 11:21:13
【问题描述】:
我今天在一个程序中发现了一个非常奇怪的 PreparedStatement,用于处理我收到的错误。我追踪了它,发现了一些令人困惑的 SQL。现在,我不是 SQL 或 PreparedStatements 的高手,但这似乎是非常错误的。我还应该提到,这适用于同事的计算机,但不适用于我的计算机。
static final String SELECT_UNCOMPLETE_TASKS_FOR_UPGRADE =
"SELECT i.employeeid, i.taskid, i.itptaskarchivecd, i.itptaskstartdt, i.itptaskcompletiondt,t.taskobsoletecd, "
+ "t.taskknowledgetx, t.taskProductid, t.taskrfrncid, t.taskcorecd, t.taskwartimecd, t.parentheaderid, "
+ "t.taskparentindcd, i.itptaskstatuscd, i.itptaskarchivedt, t.certified "
+ "FROM itptask i,task t "
+ "WHERE (i.itptaskcompletiondt is NULL "
+ "AND i.employeeid = ?1 "
+ "AND i.taskid = t.taskid "
+ "AND i.itptaskarchivecd = ?2 "
+ "AND t.taskproductcd = ?3 "
+ "AND t.taskobsoletecd = ?4 "
+ "AND t.taskcorecd = ?5) "
+ "OR (i.employeeid = ?6 "
+ "AND i.taskid = t.taskid "
+ "AND 'T' = t.taskparentindcd "
+ "AND t.taskproductcd = ?7)";
我的问题很简单,参数占位符(问号)后面的数字是什么?如果这是完全不正确的语法,什么可以让它在另一个工作空间/环境中工作?任何和所有的帮助将不胜感激。谢谢。
【问题讨论】:
-
你用的是什么jdbc驱动?
-
你遇到了什么错误?
-
@Pranalee: ORA-00933: SQL 命令未正确结束
-
你的同事使用的是同一个驱动吗?
-
这看起来像是某种占位符,稍后将在代码中引用。你确定这个变量没有在代码的其他地方被使用/修改吗?也许用作创建实际语句的模板?
标签: java sql jdbc prepared-statement