Oracle PlSql 问题集锦 - 数字或值错误:字符串缓冲区太小【ORA-06502】
来源:互联网 发布:阿里云香港主机 编辑:程序博客网 时间:2024/05/06 20:24
问题描述
向Web Service发送XML请求报文时其字符数超过字符串类型的最大长度32767,错误信息【ORA-06502:PL/SQL: 数字或值错误:字符串缓冲区太小】。
问题分析
XML请求报文是用Varchar2类型的变量储存的,其Varchar2类型是又最大长度限制的。如果改为使用了CLOB存储XML报文的话,可避免长度限制,但如果直接向CLOB写入的话,会不会因内容过大会不会出问题?尤其是在Web Service不支持大数据量的传输。
解决方案
使用CLOB直接存储XML请求报文后,就不会出现因用VARCHAR2存储XML请求报文而报错误信息。但需注意的是在提交Web Service请求时不宜直接去提交整个CLOB XML请求报文,因为当XML请求报文内容过大时还是会报上述错误,故而用dbms_lob.substr()将CLOB分段去提交XML请求报文是最为稳妥的方法。
DECLARE l_clob_len NUMBER; l_buf_len_std NUMBER := 9000; l_seg_count NUMBER; l_buf_len_cur NUMBER; l_sub_content VARCHAR2(20000);BEGIN l_clob_len := dbms_lob.getlength(p_request_clob); --RequestXML l_seg_count := floor(l_clob_len / l_buf_len_std); FOR i IN 0 .. l_seg_count LOOP IF i = l_seg_count THEN l_buf_len_cur := l_clob_len - i * l_buf_len_std; ELSE l_buf_len_cur := l_buf_len_std; END IF; IF l_buf_len_cur > 0 THEN l_sub_content := dbms_lob.substr(lob_loc => p_request_clob, amount => l_buf_len_std, offset => i * l_buf_len_std + 1); utl_http.write_text(r => p_http_req, data => l_sub_content); END IF; END LOOP;END;
0 0
- Oracle PlSql 问题集锦 - 数字或值错误:字符串缓冲区太小【ORA-06502】
- Oracle ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- Oracle ORA-06502 数字或值错误:字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小错误分析
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- delphi ora-06502 pl sql 数字或值错误 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
- ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小解决办法
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- 生成awr报告时报ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- 在业务系统中调用水晶报表提示:ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- 生成AWR时出错, ERROR: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY"
- Navicat修改编码(SQL Error: 1366: Incorrect string value)
- 安卓文件存储
- 华为OJ-删除字符串中出现次数最少的字符
- SparseArray<E>详解 在一些情况下可以代替HashMap提高性能
- java中事件监听器
- Oracle PlSql 问题集锦 - 数字或值错误:字符串缓冲区太小【ORA-06502】
- "此实现不是 Windows 平台 FIPS 验证的加密算法的一部分"解决办法
- Android 性能优化之使用线程池处理异步任务
- java集合中对象某属性比较排序Comparable与Comparator
- 用gradle打包android_apk时遇到的一些问题
- leetcode刷题之旅——474. Ones and Zeroes
- 超前进位加法器
- 关键字+静态+访问权限+内部类
- Framework7下拉刷新,滚动加载更多,幻灯片