求助读取含大字段oracle更新clob字段表非常慢,报1555

> PL/SQL下明文显示CLOB大字段内容selectdbms_lob.substr(t.字段名)f
PL/SQL下明文显示CLOB大字段内容selectdbms_lob.substr(t.字段名)f
发布时间: & &
浏览:7 & &
回复:0 & &
悬赏:0.0希赛币
PL/SQL下明文显示CLOB大字段内容
select dbms_lob.substr(t.字段名) from 表名
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&2010年9月 Oracle大版内专家分月排行榜第二
2011年4月 Oracle大版内专家分月排行榜第三2011年3月 Oracle大版内专家分月排行榜第三2011年1月 Oracle大版内专家分月排行榜第三
2011年4月 Oracle大版内专家分月排行榜第二
2011年2月 Oracle大版内专家分月排行榜第三2010年11月 Oracle大版内专家分月排行榜第三
2006年12月 Oracle大版内专家分月排行榜第三
2010年6月 其他数据库开发大版内专家分月排行榜第二2010年6月 Oracle大版内专家分月排行榜第二2010年5月 其他数据库开发大版内专家分月排行榜第二
2011年1月 其他数据库开发大版内专家分月排行榜第三2010年12月 其他数据库开发大版内专家分月排行榜第三
2007年7月 总版技术专家分月排行榜第三
2007年9月 Oracle大版内专家分月排行榜第一2007年7月 Oracle大版内专家分月排行榜第一2007年6月 Oracle大版内专家分月排行榜第一2008年7月 Delphi大版内专家分月排行榜第一2008年3月 Delphi大版内专家分月排行榜第一2008年2月 Delphi大版内专家分月排行榜第一2007年12月 Delphi大版内专家分月排行榜第一2007年11月 Delphi大版内专家分月排行榜第一2007年10月 Delphi大版内专家分月排行榜第一2007年9月 Delphi大版内专家分月排行榜第一2007年7月 Delphi大版内专家分月排行榜第一2007年6月 Delphi大版内专家分月排行榜第一2007年4月 Delphi大版内专家分月排行榜第一2007年1月 Delphi大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。Oracle数据库大字段问题
问题描述:字段内容长度超4000
最近项目中存在用某些字段存预处理sql语句,最初,项目此类型字段用varchar2(4000),但随着项目跟进到二期,牵连的表越来越多,存在预处理索引,中间临时表的问题,预处理SQL字段长度超过4000。
oracel默认varchar2类型是不能超过4000的
我们都知道,oracel默认varchar2类型是不能超过4000的,如果类型超过4000的数据插入会自动转为long型数据插入,所以问题来了。
所以我将表中需要超过4000内容的字段该文long型,接下来问题又来了。
oracle一个表中最多只能有一个long型字段
我们又知道,oracle一个表中最多只能有一个long型字段,所以这种解决方案又不适合解决业务需求了,经查询oracle推荐用clob字段类型存储。
这里需要简单普及一下clob和blob的知识:CLOB(Character Large Object) 字符大对象,Blob(Binary Large Object)二进制大对象。
由字面意思可以简单的辨别根据需求选择不同的对应类型,我们项目中这个字段全是文字形式的预处理sql,所以选择了clob,如果在遇到文件、视频、音频等可以选择blob哈。
好吧,既然oracle推荐使用这种clob方式存储超4000的字符内容,那我就选择呗。
接下来问题又来了:这是一种对象存储方式,如何存取呢?
简单的举个栗子吧:
为了使用方便我们肯定要进行数据封装,简单写个类似bean
Class User
以及对应的set get方法。
我们在遍历查询结果集ResultSet的时候将对应的结果user.setClob(rs.getClob(“sqla”));
因为我们要用clob里面的内容信息,将Clob转为String使用呗
这就对了塞。在user对象能存储进sqla这个clob对象了吧,是我们就将其取出来用呗,
简单测试一下System.out.println(user.getSqla().toString());
这我们都知道,这打印出来是对象地址对吧。
查询了下怎么将clob转String,我在用的时候将clob转为String使用呗,就查了一下写工具类,方便使用的时候调用
public static String clobToString(CLOB clob) throws SQLException, IOException {
result clob != null ? clob.getSubString(1, (int) clob.length()):
当jdbc返回给我user对象后我在使用的地方调用clobToString(user.getSqls()),抛出的异常是:连接数据库才能操作。
写了一个stringToClob(String string) 方法返回Clob对象,关键代码如下:
new javax.sql.rowset.serial.SerialClob(s.toCharArray());这就是将字符串变为char数组利用jdbcApi转换。
在使用的地方调用同样报出需要连接数据库才能操作。
所以经研究发现,在jdbc外面String与clob互转是会出错的。
整文的核心:将转换代码在jdbc 操纵是使用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1053次
排名:千里之外
原创:13篇
(1)(1)(13)你有碰到 从Orcale 中查询clob大字段的时候报 java.lang.NumberFormatException: For input string: "" 的错误没有
你有碰到 从Orcale 中查询clob大字段的时候报 java.lang.NumberFormatException: For input string: && 的错误没有
估计是你一个表中的clob字段过多
用的hibernate &query.list() &得到 查询的结果集 &然后就报错误 &
楼上正解, 直接转 字符串 和 文件流, 确定后才可以转 你需要的类型, 不能确定 blob的数据类型是什么
blob一般是直接转string的。 看着错误原因。 像是你直接getint的结果。 应该是getClob之后。 把clob转成string
显然是CLOB字符串转int时候出的问题
不行转换成LONG试试
你用数字接收的么?
SQL打印出来,放到数据中执行一下看看是什么情况。
--- 共有 2 条评论 ---
字符串类型的问题吧。
sql是正确的
放到数据库可以执行 没问题
估计是空格问题,先trim下再试试
--- 共有 1 条评论 ---
是用hibernate sql 查询数据库的时候 报的错误}

我要回帖

更多关于 clob字段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信