oracle xmltype转字节,extractvalue处理XMLTYPE类型超过4000字节ORA-01706的解决方法
extractvalue處理XMLTYPE類型超過4000字節(jié)ORA-01706的解決方法
發(fā)布時間:2020-08-14 15:40:17
來源:ITPUB博客
閱讀:226
作者:guocun09
extractvalue在處理XMLTYPE類型運算時非常方便,但在處理超過4000字節(jié)column就力不從心了。
問題:
一位朋友在Oracle中使用extractvalue處理XMLTYPE類型時,發(fā)現(xiàn)column值超過4000字節(jié)時就會報錯ORA-01706.
是否真會這樣呢?
通過實驗重現(xiàn)問題:
1.創(chuàng)建XML table
Create?TABLE?testxml(
id?NUMBER,
data?XMLTYPE
);
2.創(chuàng)建目錄
CREATE?OR?REPLACE?DIRECTORY
EXPDP_DIR?AS
'/data/expdp_dir/';
3.在目錄/data/expdp_dir/ 中建立11.xml文件,
模擬Data2長度為4001字節(jié),文件內(nèi)容如下:
MES
01234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340123401234012340
4.通過bfile方式insert數(shù)據(jù)
insert?into?testxml(id,data)
values(6,xmltype(bfilename('EXPDP_DIR','11.xml'),nls_charset_id('AL32UTF8')));
commit;
5.查看insert后數(shù)據(jù)
select?*from?testxml
6.使用extractvalue查詢小于4000字節(jié)column Data1,可以正常返回結(jié)果
select??extractvalue(data,'/Workbook/Row/Data1')?from?testxml;
7
.
使用
extractvalue
查詢大于4000字節(jié)column Data2,出現(xiàn)報錯
ORA-01706
select??extractvalue(data,'/Workbook/Row/Data2')?from?testxml;
以上證實extractvalue無法處理大于4000字節(jié)column
解決:
查看Oracle官方文檔對extractvalue函數(shù)的介紹
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions061.htm#SQLRF06173
The
EXTRACTVALUE
function is deprecated. It is still supported for backward compatibility. However, Oracle recommends that you use the
XMLTABLE
function, or the
XMLCAST
and
XMLQUERY
functions instead. See
XMLTABLE
,
XMLCAST
, and
XMLQUERY
for more information.
原來官方已建議不要再使用extractvalue,而建議使用XMLTABLE,XMLCASE,XMLQUERY函數(shù)
繼續(xù)查閱XMLTABLE使用文檔
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions253.htm#SQLRF06232
利用XMLTABLE函數(shù)處理大于4000字節(jié)column:
SELECT?*?FROM?testxml,XMLTABLE('/Workbook'?PASSING?testxml.data?COLUMNS?CON?clob?PATH?'/Workbook/Row/Data2'?)
在XMLTABLE可以自定義字符類型,這里指定clob類型可成功獲取超過4000字節(jié)數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的oracle xmltype转字节,extractvalue处理XMLTYPE类型超过4000字节ORA-01706的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle12c em 空白,Orac
- 下一篇: 采用的php cms分校站点 打开特别慢