CLOB处理的一些问题.
来源:互联网 发布:虎牙pc直播软件 编辑:程序博客网 时间:2024/05/29 09:07
1: CLOB超过2的15次方时,隐式字符转换会失效,导致无法拼接数字至CLOB
我用如下脚本做了测试,当clob超过32767的时候拼接数字就是出现问题.隐形字符转换失效.需要对数字进行转换才能拼接成功,32767应该是clob一个存储块的大小吧.
具体原因还需要查阅clob相关文档.有更多测试请补充.
DECLARE
l_buff CLOB;
i NUMBER :=0;
BEGIN
WHILE i <=40000LOOP
BEGIN
IF i =32768THEN
l_buff :=l_buff || '1';
ELSE
l_buff :=l_buff || 1;
ENDIF;
EXCEPTION
WHENOTHERSTHEN
dbms_output.put_line(i);
EXIT;
END;
i := i + 1;
ENDLOOP;
END;
2:CLOB写入文件,如果不超过一定的2的15次方,可以直接把CLOB作为VARCHAR2直接写入文件.
但是需要注意写入文件时文件buff大小同样不能超过2的15次方.超过的部分无法写入.需要定时进行buff写入
FUNCTION clob_to_file(o_error_message IN OUT rtk_errors.rtk_text%TYPE,
o_clob_buff IN OUT CLOB,
o_file IN OUT utl_file.file_type)
RETURN BOOLEAN IS
l_program VARCHAR2(255) := 'cmx_zpwfepos_pub_pkg.clob_to_file';
n_offset INTEGER;
n_clob_size INTEGER;
v_buf VARCHAR2(4000);
v_buf_long INTEGER := 1000;
BEGIN
n_clob_size := dbms_lob.getlength(o_clob_buff);
n_offset := 1;
WHILE n_offset <= n_clob_size LOOP
v_buf := dbms_lob.substr(lob_loc => o_clob_buff,
amount => v_buf_long,
offset => n_offset);
utl_file.put(o_file, v_buf);
utl_file.fflush(v_file);
n_offset := n_offset + v_buf_long;
END LOOP;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
o_error_message := sql_lib.create_msg('PACKAGE_ERROR',
SQLERRM,
l_program,
to_char(SQLCODE));
RETURN FALSE;
END clob_to_file;
- CLOB处理的一些问题.
- CLOB类型使用时注意的一些小问题
- CLOB处理的处理简化
- oracle数据库中CLOB字段的处理问题
- hibernate clob/blob的处理
- PHP处理Oracle的CLOB
- 对clob字段的处理
- Orcale 中的CLOB字段的处理,hibernate处理clob
- Oracle处理CLOB超过4000入库问题
- Union Clob字段的问题
- CLOB数据类型的显示问题
- iBATIS + Oracle Clob(Blob)存取时的一些问题的经验总结
- ATS的一些问题处理
- 关于Hiberante存储CLOB的一些心得体会
- oracle8i中对clob的处理
- 数据转触时clob字段的处理办法
- jdbc处理oracle的clob字段
- 处理blob和clob的通用类
- java 并发
- ffmpeg ts
- 验证手机号码和电话号码的正则表达式
- 谈谈final, finally, finalize的区别
- 知乎的整个网站架构
- CLOB处理的一些问题.
- mysql 结构层次
- Android菜鸟的成长笔记(24)——Android中的振动器
- 移动硬盘故障损坏照片怎么恢复
- python的排序方法
- error while loading shared libraries: xxx.so.x"错误的原因和解决办法
- Android 有两种办法可以监控SDCARD的状态
- 遇到的错误-----MySQL使用临时表 出现 “ERROR 1137 (HY000): Can't reopen table” 的异常 解决方法
- pending to do