如何将 blob 转换为 clob 或如何在 oracle 中为 BLOB 使用 extractValue 函数
How to convert blob to clob or how to use extractValue function for BLOB in oracle
我尝试在 extractValue() 中使用 BLOB 数据类型来获取指定 XPATH 中的文本,但它对于 BLOB 数据类型抛出错误,而对于 CLOB 数据类型它工作正常。
所以我尝试使用从 Whosebug 获得的以下逻辑将 BLOB 转换为 CLOB
create function clobfromblob(p_blob blob) return clob is
l_clob clob;
l_dest_offsset integer := 1;
l_src_offsset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer;
begin
if p_blob is null then
return null;
end if;
dbms_lob.createTemporary(lob_loc => l_clob
,cache => false);
dbms_lob.converttoclob(dest_lob => l_clob
,src_blob => p_blob
,amount => dbms_lob.lobmaxsize
,dest_offset => l_dest_offsset
,src_offset => l_src_offsset
,blob_csid => dbms_lob.default_csid
,lang_context => l_lang_context
,warning => l_warning);
return l_clob;
end;
使用上述函数后,我得到的输出格式不可读。请帮助解决如何将 blob 转换为可读格式的 clob 或如何将 extractValue() 用于 BLOB 消息
您可以使用 OraOpenSource Utils 包 link
其中包含许多可用于 BLOB/CLOB 等的函数
1) 错误:PLS-306:参数的数量或类型错误。
Xmltype 的 blob 数据构造函数需要两个参数。 xmltype(blob,csid)
cisd
- blob 数据的字符集 ID SELECT NLS_CHARSET_ID('UTF8') csid FROM DUAL;
2) ORA-31011: XML 解析失败。 ... LPX-00216:无效字符 31 (0x1F)
这意味着 oracle 无法解析由 clobfromblob 生成的 xml。
invalid character 31 (0x1F)
0x1f 是美国的 asci 十六进制代码(单位分隔符)。此异常的原因可能是从 blob 到 clob 的转换过程中编码错误或 blob 数据中的无效 xml。
我尝试在 extractValue() 中使用 BLOB 数据类型来获取指定 XPATH 中的文本,但它对于 BLOB 数据类型抛出错误,而对于 CLOB 数据类型它工作正常。
所以我尝试使用从 Whosebug 获得的以下逻辑将 BLOB 转换为 CLOB
create function clobfromblob(p_blob blob) return clob is
l_clob clob;
l_dest_offsset integer := 1;
l_src_offsset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer;
begin
if p_blob is null then
return null;
end if;
dbms_lob.createTemporary(lob_loc => l_clob
,cache => false);
dbms_lob.converttoclob(dest_lob => l_clob
,src_blob => p_blob
,amount => dbms_lob.lobmaxsize
,dest_offset => l_dest_offsset
,src_offset => l_src_offsset
,blob_csid => dbms_lob.default_csid
,lang_context => l_lang_context
,warning => l_warning);
return l_clob;
end;
使用上述函数后,我得到的输出格式不可读。请帮助解决如何将 blob 转换为可读格式的 clob 或如何将 extractValue() 用于 BLOB 消息
您可以使用 OraOpenSource Utils 包 link 其中包含许多可用于 BLOB/CLOB 等的函数
1) 错误:PLS-306:参数的数量或类型错误。
Xmltype 的 blob 数据构造函数需要两个参数。 xmltype(blob,csid)
cisd
- blob 数据的字符集 ID SELECT NLS_CHARSET_ID('UTF8') csid FROM DUAL;
2) ORA-31011: XML 解析失败。 ... LPX-00216:无效字符 31 (0x1F)
这意味着 oracle 无法解析由 clobfromblob 生成的 xml。
invalid character 31 (0x1F)
0x1f 是美国的 asci 十六进制代码(单位分隔符)。此异常的原因可能是从 blob 到 clob 的转换过程中编码错误或 blob 数据中的无效 xml。