long データ型を clob に変換しようとすると、Oracle 11g で次のエラーが表示されます。私は試します:select to_lob(long_col_name) from table1.
私は得ます:
[Error] Execution (1: 39): ORA-00932: inconsistent datatypes: expected - got LONG
ここで何が間違っていますか?
long データ型を clob に変換しようとすると、Oracle 11g で次のエラーが表示されます。私は試します:select to_lob(long_col_name) from table1.
私は得ます:
[Error] Execution (1: 39): ORA-00932: inconsistent datatypes: expected - got LONG
ここで何が間違っていますか?
同僚の助けを借りてここで答えを見つけました:http: //docs.oracle.com/cd/B19306_01/server.102/b14200/functions185.htm しかし、なぜこの制限が適用されているのかわかりません
この関数は、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
LONGをLOBに直接フェッチすることはできません。最初にVARCHAR2に変換することをお勧めします