簡體   English   中英

JDBC / Oracle在不准備狀態的情況下插入NULL

[英]JDBC/Oracle insert NULL without preparedStatement

我有一個我不明白的非常困惑的問題。 我正在為不同的表構建INSERT語句,並在最后將它們作為Batch執行。

語句是這樣構建的:

INSERT INTO table VALUES ('anyValue', 'anyValue', 'anyValue', ...)

表定義不僅包含varchar,還包含數字,浮點數和時間戳記,但這一點都不重要,因為Oracle本身進行類型轉換

但是...如果我嘗試在NUMBER中插入NULL,則表示無效數字,但例如在PLSQL開發人員中,它的作用就像一個超級按鈕。 看起來像這樣:

INSERT INTO table (varchar, varchar, number, ...) VALUES ('value', 'value', NULL, ...) <-不起作用,但是為什么呢?

我正在將Oracle11g數據庫與ojdbc6.jar庫一起使用。 我知道上面的語法是不正確的,但這只是為了闡明類型和我嘗試插入的內容。

沒有使用prepareStatement和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

線程“主”中的異常java.sql.BatchUpdateException:Fehler bei Stapelverarbeitung aufgetreten:ORA-01722:無效的數字

在oracle.jdbc.driver.OracleStatement.executeBatch(OracleStatement.java:4586)在de.draexlmaier.pcm.test.testcase.TestCaseHelper.initializeTestData(TestCaseHelper)的oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)處.java:285),位於de.draexlmaier.pcm.test.testcase.TestCaseHelper.setTestName(TestCaseHelper.java:118),位於de.draexlmaier.pcm.test.utilities.Main.main(Main.java:19)

由於您使用的是Java,所以我猜想列和插入的值會有一些映射問題。 請先指定列名稱,然后輸入類似

insert into <table>(column_1,column_2,column_3,...) values(val1,val2,val3...); 

您可以嘗試使用空字符串'',oracle db會將其視為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM