1
當我嘗試執行以下語句:插入...選擇 - 讓ORA-01461:只能用於插入結合long值轉換爲一個LONG列
INSERT INTO myTable (id, some_data, more_data)
SELECT ?, ?, ? FROM dual
WHERE NOT EXISTS (
SELECT 1 FROM myTable WHERE id = ?)
我得到ORA-01461:可以綁定僅用於插入LONG列的LONG值。
然而,當我改變我的查詢:
INSERT INTO myTable (id, some_data, more_data)
VALUE (?, ?, ?)
使用相同的值,語句成功。
請注意,我的表包含VARCHAR2和BLOB。但是這兩個陳述的價值都是一樣的。
任何想法爲什麼原始失敗?
編輯1: 評論員(羅曼)和同事建議我使用MERGE INTO而不是INSERT ... SELECT ... WHERE NOT EXISTS ....好的一點,我做了 - 但它給了我相同的問題(ORA-01461 ... LONG ... LONG)。
編輯2: 對BLOB列的to_lob(?)不起作用,給我「ORA-00932:不一致的數據類型:預期的LONG BINARY得到BINARY」。
看起來你想要做的事情可以用MERGE語句來實現...... – Romain
是的,一位同事剛剛提到過。我仍然想知道爲什麼這不起作用。當我使用to_lob()時,我得到「ORA-00932:不一致的數據類型:預計的LONG BINARY得到了BINARY」。 –