使用Informix 11.7,我想在select語句這樣執行與JDBC位置參數的INSERT SELECT查詢:INSERT SELECT不工作
INSERT INTO table1(id, code, label)
SELECT ?, ?, ? FROM table2
WHERE ...
參數設置如下:
stmt.setString(1, "auniqueid");
stmt.setString(2, "code");
stmt.setString(3, "coollabel");
我收到以下錯誤:在線程「主要」值java.sql.SQLException
例外:發生語法錯誤。
當位置參數「?」放在其他地方工作正常。我沒有使用PostgreSQL的這個問題。我的查詢有什麼問題?我使用Informix JDBC Driver v3.70 JC1。
感謝您的幫助。
不,這不是我想要做的。我想通過佔位符指定列值?並一次插入許多行以提高性能。事實上,我的SELECT查詢有點複雜,有一個NOT EXISTS子句可以過濾結果。當然,它可以使用INSERT VALUES語法,但我必須將我的過程分爲兩部分:首先是SELECT查詢,它將返回要插入的值,然後是多個INSERT VALUES查詢,循環SELECT結果。 – mishka
好的;我不確定你爲什麼要重複插入相同的值,但如果這是你想要的,那麼投射佔位符將會起作用(如果Mark Rotteveel尚未提出建議,這將是我的下一個建議,儘管我可能已經試圖用'?VARCHAR(16)'符號而不是SQL標準'CAST(?AS VARCHAR(16))')來建議。所以,你沒事。 (簡單地解釋一下你想要實現的效果,以便像這樣的答案走彎路,這會很有幫助。你的問題沒有提到你試圖插入相同數據的許多副本。) –
對不起,我缺乏的清晰度。事實上,我不想一次又一次地插入完全相同的值。我的SELECT子句是這樣的:SELECT table2.id,'fixedvalue','fixedvalue'。我finnaly選擇手工構建我的查詢,不使用JDBC佔位符,以避免SQL類型之間的可移植性問題,並防止數據庫架構修改。無論如何,感謝您的幫助! – mishka