简体   繁体   English

如何从Oracle集合中检索Clob数据

[英]How to retrive clob data from oracle collection

I have a requirment where oracle procedure is sending me a oracle collection. 我有一个要求,其中oracle过程向我发送了oracle集合。 This collection contains clob data type. 该集合包含clob数据类型。
How do I get this clob data ? 如何获得该Clob数据?

Code: 码:

    public static void main(String[] args) throws SQLException {
            DBLayer db=new DBLayer();
            CallableStatement ftRPCaStmt = null;
            ResultSet requestPropCursor = null;
            CallableStatement callsmt=null;
            String dataCol="stg_core.tab_inft_flexi_gl_rec_hd2";
            Connection conn=db.getConnection();
    ArrayDescriptor structDescriptor1 = ArrayDescriptor.createDescriptor   (dataCol.toUpperCase(), conn);                   
                  ftRPCaStmt = conn.prepareCall("{ call stg_core.gl_test1_clob_c2(?,?,?) }");
            ftRPCaStmt.registerOutParameter(1, Types.VARCHAR);
            ftRPCaStmt.registerOutParameter(2, Types.VARCHAR);
            ftRPCaStmt.registerOutParameter(3, Types.ARRAY,dataCol.toUpperCase());
            ftRPCaStmt.execute();

            Object[] data = (Object[]) ((Array) ftRPCaStmt.getObject(3)).getArray();    

when I printed data I'm getting data value as Ljava.lang.Object;@b2fd8f , but I need the clob data.. 当我打印数据时,我得到的数据值为Ljava.lang.Object;@b2fd8f ,但是我需要Ljava.lang.Object;@b2fd8f数据。
Please suggest.. 请建议..

Try as 尝试为

callsmt.registerOutParameter(3, OracleTypes.CLOB);

and then 接着

Clob  clob = proc_stmt.getClob(3);
Reader reader = clob .getCharacterStream();
            char[] buffer = new char[1];
            while(reader.read(buffer) > 0) {
                log.info(buffer);
            }           
//          log.info(retValue);
            .... 

the above code snippet is not compiled, this is to provide the guideline. 上面的代码段未编译,这是提供指导。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM