我有一个非常令人困惑的问题,我不明白。 我正在为不同的表构建INSERT语句,并在最后将它们作为Batch执行。
语句构建如下:
INSERT INTO table VALUES ('anyValue', 'anyValue', 'anyValue', ...)
表定义不仅包含varchar,还有number,float和timestamp,但它根本不重要,因为Oracle自己进行类型转换
BUT ... 如果我尝试在NUMBER中插入NULL,则表示无效数字,但是例如在PLSQL开发人员中,它就像魅力一样。看起来像这样:
INSERT INTO table (varchar, varchar, number, ...) VALUES ('value', 'value', NULL, ...)
< - 不起作用,但为什么?
我正在使用带有ojdbc6.jar库的Oracle11g数据库。 我知道上面的语法不正确,但它只是为了澄清类型和我尝试插入的内容。
有没有解决方法,没有使用preparedStatement和setNull(),因为我不知道运行时的字段类型
修改
INSERT ALL INTO comediatypeadjustments VALUES('1','TEST','1','DEL_COC_361','DEL_COC_361','100','Y','Y','N','GREEN','Y','Y','N','N','LIGHTGREEN','STD','10.65','STD','55.25','N','N',NULL,NULL,NULL,NULL,'N',NULL,NULL,NULL,NULL,'N',NULL,NULL,NULL,NULL,'Y','WHITE','STD_BOLD_UL','44.25',NULL,NULL,'N','N','N',NULL,'N',NULL,'N',NULL,'N',NULL,NULL,NULL,NULL,'Y','N') INTO comediatypeadjustments VALUES('2','TEST','2','DEL_COC_362','DEL_COC_362','100','Y','Y','N','BLUE','Y','Y','N','N','LIGHTGREEN','STD','10.65','STD','55.25','N','N',NULL,NULL,NULL,NULL,'N',NULL,NULL,NULL,NULL,'N',NULL,NULL,NULL,NULL,'Y','WHITE','STD_BOLD_UL','44.25',NULL,NULL,'N','N','N',NULL,'N',NULL,'N',NULL,'N',NULL,NULL,NULL,NULL,'Y','N') SELECT * FROM DUAL
线程中的异常“main”java.sql.BatchUpdateException:Fehler bei Stapelverarbeitung aufgetreten:ORA-01722:无效数字
在 oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:4586) 在 oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230) 在 de.draexlmaier.pcm.test.testcase.TestCaseHelper.initializeTestData(TestCaseHelper.java:285) 在 de.draexlmaier.pcm.test.testcase.TestCaseHelper.setTestName(TestCaseHelper.java:118) at de.draexlmaier.pcm.test.utilities.Main.main(Main.java:19)
答案 0 :(得分:0)
由于您使用的是Java,我想列和插入的值会有一些映射问题。请先指定列名,然后输入
之类的值insert into <table>(column_1,column_2,column_3,...) values(val1,val2,val3...);
答案 1 :(得分:-1)
您可以尝试空字符串&#39;&#39; oracle db会将其视为空。