各位大侠好,小弟最近在研究oracle的存储过程,遇到这么一个问题
在存储过程中,用json做开发
-- Created on 2011-10-15 by HASHAN
declare
v_json json := json();begin
v_json.put('name1','hello,world');
v_json.put('哈山','写oracle存储过程');
v_json.print;
end;打印输出结果:{
"name1" : "hello,world",
"\u54C8\u5C71" : "\u5199oracle\u5B58\u50A8\u8FC7\u7A0B"
}我又写一个函数,将unicode转化成中文 /*===========================================================================
过程名 : decodeUnicode2CN
功能 : 将unicode编码格式转换成中文
输入参数 :text :unicode编码内容
输出参数 :中文输出
=============================================================================*/
FUNCTION DECODEUNICODE2CN(TEXT IN VARCHAR2) RETURN VARCHAR2 IS
V_SQL VARCHAR2(32765); --编码转换sql
TEXT_BUFFER VARCHAR2(32765); --输出中文
BEGIN
V_SQL := 'select unistr(REPLACE(''' || TEXT ||
''',''\u'',''\'')) from dual ';
EXECUTE IMMEDIATE V_SQL
INTO TEXT_BUFFER;
RETURN TEXT_BUFFER;
END; 调用以后,以上乱码均被解决了,输出结果:
{
"name1" : "hello,world",
"哈山" : "写oracle存储过程"
}==================================================================
但是,该函数的变量的buffer太小。。 我们项目的输出内容很大,比如说去营业厅办理宽带,手机,固话等业务,将所有的业务打印输出,这个输出量太大了,包含客户的信息,业务的信息,套餐信息,费用信息,营业厅信息等等。。这么大的量,32767根本不足。。
直接调用的话会报错,变量空间太小,那个sql执行也会报错,同样的错误。。唯一解决的办法,我比较笨,只想到把内容分成N份,分别转换,最终再连接到一块,输出给页面,进行展示。。请问大家有什么好的办法或者建议没? 另外N怎么确定。。
跪谢了,这几个周六,周日都得加班度过了。。伤不起。。
在存储过程中,用json做开发
-- Created on 2011-10-15 by HASHAN
declare
v_json json := json();begin
v_json.put('name1','hello,world');
v_json.put('哈山','写oracle存储过程');
v_json.print;
end;打印输出结果:{
"name1" : "hello,world",
"\u54C8\u5C71" : "\u5199oracle\u5B58\u50A8\u8FC7\u7A0B"
}我又写一个函数,将unicode转化成中文 /*===========================================================================
过程名 : decodeUnicode2CN
功能 : 将unicode编码格式转换成中文
输入参数 :text :unicode编码内容
输出参数 :中文输出
=============================================================================*/
FUNCTION DECODEUNICODE2CN(TEXT IN VARCHAR2) RETURN VARCHAR2 IS
V_SQL VARCHAR2(32765); --编码转换sql
TEXT_BUFFER VARCHAR2(32765); --输出中文
BEGIN
V_SQL := 'select unistr(REPLACE(''' || TEXT ||
''',''\u'',''\'')) from dual ';
EXECUTE IMMEDIATE V_SQL
INTO TEXT_BUFFER;
RETURN TEXT_BUFFER;
END; 调用以后,以上乱码均被解决了,输出结果:
{
"name1" : "hello,world",
"哈山" : "写oracle存储过程"
}==================================================================
但是,该函数的变量的buffer太小。。 我们项目的输出内容很大,比如说去营业厅办理宽带,手机,固话等业务,将所有的业务打印输出,这个输出量太大了,包含客户的信息,业务的信息,套餐信息,费用信息,营业厅信息等等。。这么大的量,32767根本不足。。
直接调用的话会报错,变量空间太小,那个sql执行也会报错,同样的错误。。唯一解决的办法,我比较笨,只想到把内容分成N份,分别转换,最终再连接到一块,输出给页面,进行展示。。请问大家有什么好的办法或者建议没? 另外N怎么确定。。
跪谢了,这几个周六,周日都得加班度过了。。伤不起。。
解决方案 »
- oracle怎么附加表空间?
- orcale 安装
- 日文存储问题_急!
- 求一条查询语句
- 菜鸟问题,oracle9i的监听如何启动啊
- 除了关系数据库外,听说还有个实时数据库(内存数据库),是啥呀?讨论讨论!
- 初来此地,向各位问好,同时请教一点基础问题!:)
- 请教:oracle8i的ManagementServer无法认证?为什么?一定给分
- 当选中几个checkbox,进行and检索或者or检索,这个sql语句怎么写??请大家帮忙,多谢了,一定加分。。。!!!!
- 哪里有DEVELOPER/2000的电子版本的教材下载!
- 有关触发器和临时表的问题,求高手指点……
- oracle数据库中,如何能够查询到一条记录产生的时间?
程序员你伤不起呀。。