我有一个存储过程 
create or replace procedure aaaa(
id number,oflag out char,
strxml out long,-- 返回字符串很长
ossmsg out varchar2
)
---java 调用 
cs=conn.prepareCall("{call aaaa(?,?,?,?) }");
cs.setLong(1, id.longValue());
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.registerOutParameter(3, java.sql.Types.LONGVARCHAR); // 
cs.registerOutParameter(4, java.sql.Types.VARCHAR);        String xml=cs.getString(3);
        System.out.print(xml);
----
程序执行结果 当 反馈结果长度大于4-5千 时,只能得到部分返回字符串。。不会报错,但是结果不对。大家帮忙看看有什么好方法??        

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【kafeiwudi】截止到2008-07-23 00:34:48的历史汇总数据(不包括此帖):
    发帖的总数量:6                        发帖的总分数:60                       每贴平均分数:10                       
    回帖的总数量:9                        得分贴总数量:2                        回帖的得分率:22%                      
    结贴的总数量:6                        结贴的总分数:60                       
    无满意结贴数:3                        无满意结贴分:45                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:50.00 %               无满意结分率:75.00 %                  
    敬礼!
      

  2.   

    不去看问题,变态一点,过程里直接吧long转成varchar,然后java用String接受,然后再弄成long
      

  3.   


    --搞清楚基础知识再来回答问题,long 在 oracle 里面是长字符串,长度可以达到2G,varchar 只有 40000字节,也就是说只能存2000个字符。
      

  4.   

    varchar 只有 4000字节 写错了。。
      

  5.   

    4K bytes == 2K 字符?