JAVA与ORACLE对大数据字段类型的存取

    xiaoxiao2022-07-13  176

    大数据字段有为CLOB,BLOB,LONG

    一、CLOB(Character Large Object) 用于存储大文本 直接写insert存是存进去了,但是当超过2000字节时,仍然报错: 数字或值错误 : 字符串缓冲区太小 这是因为,存进去的时候,如果直接写在value中,自动会识别为字符串类型,正确做法应该是,先绑定一个clob类型的变量。

    DECLARE V_LANG CLOB := :CONTENT; BEGIN INSERT INTO TB (ID,CONTENT) VALUES ('273e3ba0-0192-4a03-b84b-dae211b4c1bb',V_LANG );

    取值的时候

    //clob->string Clob clobContent = rs.getClob("CONTENT"); String content = ""; if(clobContent != null){ content = clobContent.getSubString((long)1,(int)clobContent.length()); }

    二、BLOB(Binary Large Object) 常用于存储二进制文本 之前做BLOB字段的时候,直接使用下列代码,后发现还是有问题的。

    插入 使用rawtohex函数,将一个二进制构成的字符串转换为十六进制,直接用string类型传进去即可 INSERT INTO tb (....,RAWTOHEX(:CONTENT),...) ..... paraMap.put("CONTENT", model.getContent() == null ? "" : model.getContent()); 取值 使用 utl_raw.cast_to_varchar2 函数,取出来为string SELECT utl_raw.cast_to_varchar2(d.CONTENT) as CONTENT FROM tb;

    这里仍然是没有绑定变量,然后当成了varchar2类型,只能插入2000。猜想如上绑定变量即可,未实现。

    最新回复(0)