我正在使用PreparedStatement
來執行更新查詢。 以下是查詢:PreparedStatement.executeUpdate()不適用於Oracle
String callersUpdateQuery = "update W67U999S a set pcrdattim= ? where exists (select b.CRDATTIM, b.RECORDCD, b.CRNODE, b.UNITCD, b.WRKTYPE from W03U999S b where a.PCRDATTIM = ? and a.CCRDATTIM = b.CRDATTIM and a.CRECORDCD = b.RECORDCD and a.CCRNODE = b.CRNODE and a.PRECORDCD = 'F' and a.PCRNODE = '01' and b.WRKTYPE = 'CALLER' and b.UNITCD=? and a.crecordcd='T')";
下面是java代碼應該更新記錄:
但preparedStatement.executeUpdate()
沒有更新所需的行並返回更新的行數爲零。奇怪的是,當我在數據庫端執行同樣的sql查詢時,記錄正在更新。 我的數據庫是Oracle和應該更新的表的模式如下:
Name Null Type
----------- -------- ----------
PCRDATTIM NOT NULL CHAR(26)
PRECORDCD NOT NULL CHAR(1)
PCRNODE NOT NULL CHAR(2)
RECORDTYPE NOT NULL NUMBER(3)
CCRDATTIM NOT NULL CHAR(26)
CRECORDCD NOT NULL CHAR(1)
CCRNODE NOT NULL CHAR(2)
CRDATTIM NOT NULL CHAR(26)
LINKRULE_ID NOT NULL NUMBER(14)
誰能猜有什麼錯的代碼或查詢?
*「任何人都可以猜測...?」*當然,我猜測*它與'crdattim'和/或' businessAreaName'。 – Andreas
*僅供參考:*不要在'exist'子句中的'a'上添加條件。它們應該作爲'update'的where子句的一部分。 – Andreas
'b.UNITCD'的類型和大小是什麼?也許[這](https://stackoverflow.com/questions/28894238/query-column-with-char-data-type-in-oracle)可能會有所幫助。 –