日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle Long类型转换为Clob类型

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle Long类型转换为Clob类型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

INSERT INTO sammy_test_clob
?? SELECT TO_LOB (report_xml)
???? FROM qm_s_report
??? WHERE report_name = 'Sammy';


TO_LOB
函數(shù)和LONG類型一樣,限制有很多。簡(jiǎn)單的說(shuō),TO_LOB一般只用在CREATE TABLEINSERT TABLE語(yǔ)句后面的子查詢中。在其他地方使用會(huì)報(bào)錯(cuò),比如UPDATE語(yǔ)句。

這還不是最大的問(wèn)題,最大的問(wèn)題在于,TO_LOB函數(shù)似乎并沒(méi)有真正的將LONG類型轉(zhuǎn)化為LOB數(shù)據(jù)類型。個(gè)人感覺(jué),Oracle只是對(duì)LONG類型做了一些處理,使之可以存放到一個(gè)LOB類型中去。



轉(zhuǎn)自:http://blog.csdn.net/gbnew/archive/2007/07/20/1700596.aspx

TO_LOB函數(shù)是一個(gè)很特殊的函數(shù),特殊之處在于,這個(gè)函數(shù)可以處理LONG類型數(shù)據(jù),而且這個(gè)函數(shù)和LONG類型一樣,擁有很多的限制。不過(guò),這些還不是很特殊的地方,下面簡(jiǎn)單看一下TO_LOB這個(gè)函數(shù)。

?


OracleLONG類型可謂“臭名昭著”,由于LONG類型的限制太多,以至于Oracle很少去提LONG類型有哪些限制條件,而一般都是通過(guò)說(shuō)明在哪些情況下,可以使用LONG類型。

正是這些限制阻止了LONG的使用,Oracle也在推出了大對(duì)象類型——LOB之后,強(qiáng)烈建議用戶不要在使用LONG類型。

但是,具有諷刺意味的是,Oracle建議用戶不要再使用LONG類型,可是數(shù)據(jù)字典中,隨處可以看到LONG的身影。而且,即使是目前使用的最高版本10R2LONG類型仍然在數(shù)據(jù)字典中隨處可見(jiàn)。不知道Oracle是考慮兼容性的問(wèn)題還是其他什么原因,反正Oracle仍然沒(méi)有把LONG類型從數(shù)據(jù)字典中移出去。不知道11g中是否有所改觀。

雖然Oracle自己沒(méi)有做到,但是仍然建議用戶不要在使用LONG,并使用BLOBCLOB來(lái)替換現(xiàn)有系統(tǒng)中的LONG字段。而且LONG類型的限制也確實(shí)使人頭疼,將LONG類型轉(zhuǎn)化為LOB類型的工具,就是TO_LOB函數(shù)。

TO_LOB函數(shù)和LONG類型一樣,限制有很多。簡(jiǎn)單的說(shuō),TO_LOB一般只用在CREATE TABLEINSERT TABLE語(yǔ)句后面的子查詢中。在其他地方使用會(huì)報(bào)錯(cuò),比如UPDATE語(yǔ)句。

這還不是最大的問(wèn)題,最大的問(wèn)題在于,TO_LOB函數(shù)似乎并沒(méi)有真正的將LONG類型轉(zhuǎn)化為LOB數(shù)據(jù)類型。個(gè)人感覺(jué),Oracle只是對(duì)LONG類型做了一些處理,使之可以存放到一個(gè)LOB類型中去。

SQL> CREATE TABLE T1 (ID NUMBER, TEXT CLOB);

表已創(chuàng)建。

SQL> CREATE TABLE T2 (ID NUMBER, TEXT VARCHAR2(4000));

表已創(chuàng)建。

SQL> INSERT INTO T1 SELECT ROWNUM, TEXT FROM DBA_VIEWS;
INSERT INTO T1 SELECT ROWNUM, TEXT FROM DBA_VIEWS
*
1 行出現(xiàn)錯(cuò)誤:
ORA-00997: illegal use of LONG datatype


SQL> INSERT INTO T1 SELECT ROWNUM, TO_LOB(TEXT) FROM DBA_VIEWS;

已創(chuàng)建2268行。

SQL> COMMIT;

提交完成。

使用TO_LOB可以將LONG數(shù)據(jù)插入到CLOB字段中,但是如果想要將LONG數(shù)據(jù)插入到VARCHAR2中:

SQL> INSERT INTO T2 SELECT ROWNUM, TEXT FROM DBA_VIEWS;
INSERT INTO T2 SELECT ROWNUM, TEXT FROM DBA_VIEWS
*
1 行出現(xiàn)錯(cuò)誤:
ORA-00997: illegal use of LONG datatype


SQL> INSERT INTO T2 SELECT ROWNUM, DBMS_LOB.SUBSTR(TO_LOB(TEXT), 4000, 1) FROM DBA_VIEWS;
INSERT INTO T2 SELECT ROWNUM, DBMS_LOB.SUBSTR(TO_LOB(TEXT), 4000, 1) FROM DBA_VIEWS
*
1 行出現(xiàn)錯(cuò)誤:
ORA-00932: inconsistent datatypes: expected - got LONG

直接插入肯定不行,但是剛才已經(jīng)得到了CLOB類型,那么將CLOB轉(zhuǎn)化為VARCHAR2不就可以了?但是結(jié)果確出人意料。觀察錯(cuò)誤信息,Oracle認(rèn)為返回的數(shù)據(jù)類型是LONG。似乎TO_LOB并沒(méi)有進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)化。下面再驗(yàn)證一下:

SQL> SELECT DUMP(TO_LOB(TEXT)) FROM DBA_VIEWS;
SELECT DUMP(TO_LOB(TEXT)) FROM DBA_VIEWS
*
1 行出現(xiàn)錯(cuò)誤:
ORA-00932: inconsistent datatypes: expected - got LONG


SQL> SELECT DUMP(TEXT) FROM T1;
SELECT DUMP(TEXT) FROM T1
*
1 行出現(xiàn)錯(cuò)誤:
ORA-00932: inconsistent datatypes: expected - got CLOB

從這個(gè)對(duì)比中已經(jīng)可以清楚的看到,TO_LOB函數(shù)并不像想象中的那樣返回CLOB類型,而實(shí)際上返回的仍然是LONG類型。

SQL> INSERT INTO T2 SELECT ROWNUM, TO_LOB(TEXT) FROM DBA_VIEWS;

已創(chuàng)建2268行。

直接使用TO_LOB似乎可以插入,但是仔細(xì)對(duì)比一下結(jié)果就會(huì)發(fā)現(xiàn),LONG類型數(shù)據(jù)沒(méi)有真正的插入到表中:

SQL> COL TEXT FORMAT A50
SQL> SET LONG 50
SQL> SELECT * FROM T2 WHERE ROWNUM < 3;

ID TEXT
---------- --------------------------------------------------
1
2

SQL> SELECT * FROM T1 WHERE ROWNUM < 3;

ID TEXT
---------- --------------------------------------------------
1 select OWNER, TABLE_NAME, TABLESPACE_NAME, CLUSTER
2 select a.apply_name, a.queue_name, a.queue_owner,

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/songsh96/archive/2007/09/05/882587.html

總結(jié)

以上是生活随笔為你收集整理的Oracle Long类型转换为Clob类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。