java - merge_oracle_ORA-01747: invalid user.table.column, table.column, or column specification -
i trying merge in oracle:
preparedstatement = dbconnection.preparestatement("merge dev_corpus " + "using (select ? corpusid, ? corpus_name, ? corpusdesc, ? corpusimageids, ? rocf1, ? rocf2, ? rocf3, ? rocc1, ? rocc2, ? rocc3, ? corpusactive, ? corpusrunfrequency, ? corpuslastrun, ? corpuslastsync, ? rocsettingid, ? corpusaffinity, ? corpusterms, ? corpusdomain dual) incoming " + "on (a.corpusid = incoming.corpusid ) " + "when matched " + "update set (a.corpus_name = incoming.corpus_name , a.corpusdesc = incoming.corpusdesc , a.corpusimageids = incoming.corpusimageids , a.rocf1 = incoming.rocf1 , a.rocf2 = incoming.rocf2 , a.rocf3 = incoming.rocf3 , a.rocc1 = incoming.rocc1 , a.rocc2 = incoming.rocc2 , a.rocc3 = incoming.rocc3 , a.corpusactive = incoming.corpusactive , a.corpusrunfrequency = incoming.corpusrunfrequency , a.corpuslastrun = incoming.corpuslastrun , a.corpuslastsync = incoming.corpuslastsync , a.rocsettingid = incoming.rocsettingid , a.corpusaffinity = incoming.corpusaffinity , a.corpusterms = incoming.corpusterms , a.corpusdomain = incoming.corpusdomain) " + "when not matched " + "insert (a.corpusid, a.corpus_name, a.corpusdesc, a.corpusimageids, a.rocf1, a.rocf2, a.rocf3, a.rocc1, a.rocc2, a.rocc3, a.corpusactive, a.corpusrunfrequency, a.corpuslastrun, a.corpuslastsync, a.rocsettingid, a.corpusaffinity, a.corpusterms, a.corpusdomain) " + "values (incoming.corpusid, incoming.corpus_name, incoming.corpusdesc, incoming.corpusimageids, incoming.rocf1, incoming.rocf2, incoming.rocf3, incoming.rocc1, incoming.rocc2, incoming.rocc3, incoming.corpusactive, incoming.corpusrunfrequency, incoming.corpuslastrun, incoming.corpuslastsync, incoming.rocsettingid, incoming.corpusaffinity, incoming.corpusterms, incoming.corpusdomain)");
and error:
ora-01747: invalid user.table.column, table.column, or column specification java.sql.sqlsyntaxerrorexception: ora-01747: invalid user.table.column, table.column, or column specification @ oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:447) @ oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:396) @ oracle.jdbc.driver.t4c8oall.processerror(t4c8oall.java:879) @ oracle.jdbc.driver.t4cttifun.receive(t4cttifun.java:505) @ oracle.jdbc.driver.t4cttifun.dorpc(t4cttifun.java:223) @ oracle.jdbc.driver.t4c8oall.dooall(t4c8oall.java:531) @ oracle.jdbc.driver.t4cpreparedstatement.dooall8(t4cpreparedstatement.java:207) @ oracle.jdbc.driver.t4cpreparedstatement.executeforrows(t4cpreparedstatement.java:1044) @ oracle.jdbc.driver.oraclestatement.doexecutewithtimeout(oraclestatement.java:1328) @ oracle.jdbc.driver.oraclepreparedstatement.executeinternal(oraclepreparedstatement.java:3593) @ oracle.jdbc.driver.oraclepreparedstatement.executeupdate(oraclepreparedstatement.java:3674) @ oracle.jdbc.driver.oraclepreparedstatementwrapper.executeupdate(oraclepreparedstatementwrapper.java:1354) @ com.mycompany.datalayer.db.inserttotaxonomy(db.java:261) @ com.mycompany.datalayer.db.restorebackup(db.java:94) @ com.mycompany.datalayer.db.startprocess(db.java:56) @ com.mycompany.oraclebackup.app.main(app.java:13)
now, have checked column names correct. know problem? , how can solve it? (p.s:i not using hibernate)
thank you!
in java prepared statement can use '?' column names in clause. trying extend concept other places, invalid. here problematic section in code:
select ? corpusid, ? corpus_name, ? corpusdesc
here note javadocs:
note: setter methods (setshort, setstring, , on) setting in parameter values must specify types compatible defined sql type of input parameter. instance, if in parameter has sql type integer, method setint should used.
Comments
Post a Comment