Oracle 11g在嘗試將長數據類型轉換爲clob時給了我以下錯誤。 我嘗試:select to_lob(long_col_name) from table1.
我得到:Oracle無法從LONG數據類型轉換爲CLOB數據類型(incosistent數據類型錯誤)
[Error] Execution (1: 39): ORA-00932: inconsistent datatypes: expected - got LONG
我到底錯在這裏做什麼?
Oracle 11g在嘗試將長數據類型轉換爲clob時給了我以下錯誤。 我嘗試:select to_lob(long_col_name) from table1.
我得到:Oracle無法從LONG數據類型轉換爲CLOB數據類型(incosistent數據類型錯誤)
[Error] Execution (1: 39): ORA-00932: inconsistent datatypes: expected - got LONG
我到底錯在這裏做什麼?
找到答案在這裏與同事的幫助: http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions185.htm 但不知道爲什麼這個限制是到位
你不能直接取LONG到LOB。您可能希望先將其轉換爲VARCHAR2
您可以將此函數僅應用於LONG或LONG RAW列,並且只能在INSERT語句中的子查詢的選擇列表中應用。
我建議一個這樣的解決方法,希望這有助於某人。
SELECT substr(Y.longtoclob,
43 + length('ALIASLONG'),
DBMS_LOB.GETLENGTH(Y.longtoclob) -
2 * (32 + length('ALIASLONG'))) longtoclob
from dual,
(select (dbms_xmlgen.getxml('SELECT t.column_long ALIASLONG
FROM TABLE_LONG_CLOB t WHERE t.id = 2')) longtoclob
from dual) Y where DBMS_LOB.GETLENGTH(Y.longtoclob) > 0
我發現這樣做的是這樣的:HTTP://psoug.org/reference/long2clob.html – Victor 2012-08-17 21:15:19
那是共享的好workaround.thanks。我使用LONG類型在使用舊DB的任務中工作,並且發現最好更改列類型。 – burnDB 2012-09-07 18:34:54