`
hong_1121
  • 浏览: 52592 次
  • 来自: ...
社区版块
存档分类
最新评论

String 转oracle.sql.CLOB

    博客分类:
  • JAVA
阅读更多

前两天遇害到一个问题就是需要处理一字符型变量(该变量要作为参数传入存储过程执行),但其长度超长(长度小于32767时正常,大于时就报错)。后来想了很多的解决方案,最后决定先将其转换成CLOB,然后再将其以CLOB的方式传进去。

       是如何转换的呢?经过狂搜GOOGLE,BAIDU,并且不停地测试后,终于成功了。我现将其转换代码贴出来,为大家共享,以便后来人和我一样,为其苦闷不已(就为这,我可是花了一整天的时间)

oracle.sql.CLOB clob = oracle.sql.CLOB.createTemporary(
     conn, false,
     oracle.sql.CLOB.DURATION_SESSION);
   clob.open(oracle.sql.CLOB.MODE_READWRITE);
   writer = clob.getCharacterOutputStream();
   writer.write(parmSql.toCharArray());
   writer.flush();
   writer.close();

 

不要以为这样就行了,其实不然。这个我早就知道,难就难在驱动的问题(不要小看这,这可是个难点,如果你不知道的话,呵呵)。将驱动更换成最新OJDBC14。JAR。这个需要在ORALCE网上去下。

算了还是上传一份吧,现在的懒人也多。

分享到:
评论
1 楼 wx_hello 2011-09-21  
以下是将1,2,3,4,.....转换为name1,name2,name3,name4,.....
自己写了个数据库函数,结果返回值很长,就采用分次返回的代码。。
大大减少了数据库访问量,如果使用clob返回也可以,就是clob用时过多,数据反馈到前台比较慢,下面的代码虽然查最多询了四次数据库,但是比clob省时(我测试过)
String oper_names   = "";
                String temp_str_ids = "";
                String [] operIdArr = issue_obj.split(",");
                //由于数据库返回字符串太长,只有分次提取
                if(issue_obj.length()<=1000){//直接提取
            		oper_names = getOperNameByOperId(issue_obj);
            	}
               	else if(issue_obj.length()>1000){//下面查询大于1000的ID
               		for(int k=0; k<operIdArr.length; k++){
               			temp_str_ids += operIdArr[k]+",";
               			if(temp_str_ids.length()>1100){//满1100先查询
               				oper_names += getOperNameByOperId(temp_str_ids);
               				temp_str_ids = "";//初始化
               			}
                	}
               		//查询剩下的信息
               		oper_names += getOperNameByOperId(temp_str_ids);
               		temp_str_ids = "";//初始化
                }

相关推荐

    ORACLE中CLOB字段转String类型

    ORACLE中CLOB字段转String类型

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL&gt; select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from ....

    Oracle sqldeveloper without jdk (win+linux)

    - Bug # 4918539: ORA-ORA-06502 or ORA-01460 may occurs if a procedure is executed through the Run PL/SQL dialog box and a string with multibyte characters is assigned to one of the parameters. ...

    oracle函数大全.doc

    SQL&gt; select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段). 4.支持任意大小的文本,装入几十GB都试过没问题。 5.明确到每一行的错误信息....

    Oracle中Clob类型处理解析收藏

    准备系统环境xp+.net2.0+oracle9i表结构(由于是测试,表结构随便建了一张)XX字段名类型IDVARCHAR2(70)TESTCLOB测试方式1:直接将CLOB的值拼写在SQL语句中。代码:stringid=Guid.NewGuid().ToString();OracleComman

    spring-framework-reference4.1.4

    Null and empty string values ..................................................................... 44 XML shortcut with the p-namespace .......................................................... 44 ...

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能 Oracle P/L SQL实现发送Email、浏览网页等网络操作功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 --.使用聚合函数实现 多行...

    spring-framework-reference-4.1.2

    Null and empty string values ..................................................................... 44 XML shortcut with the p-namespace .......................................................... 44 ...

    ssh(structs,spring,hibernate)框架中的上传下载

     •DefaultLobHandler:适用于大部分的数据库,如SqlServer,MySQL,对Oracle 10g也适用,但不适用于Oracle 9i(看来Oracle 9i确实是个怪胎,谁叫Oracle 公司自己都说Oracle 9i是一个过渡性的产品呢)。  •...

    oracle数据库中如何处理clob字段方法介绍

    插入: 直接写在SQL里面是不行的,一来SQL脚本有字符数限制,而来文章内容包含许多特殊字符,如换行,引号, 之类的东西,很麻烦。网上流行通用做法是先插入一个空CLOB字段,用empty_clob()方法来创建空字段,如: ...

    Oracle9i的init.ora参数中文说明

    说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串...

    Oracle事例

    sql&gt; create user juncky identified by oracle default tablespace users sql&gt; temporary tablespace temp quota 10m on data password expire sql&gt; [account lock|unlock] [profile profilename|default]; ...

    kettle通过java代码将数据库blob 字段抽取到本地文件

    kettle通过java代码将数据库blob 字段抽取到本地文件

    DevArt UniDAC v.3.70.0.18 (15-Jun-2011) (with Source Code)

    Bug with empty string parameters is fixed for ASE data provider Bug with DateTime parameter is fixed for ASE data provider Bug with "SQL statement doesn't return rows" is fixed for ASE data provider...

    Oracle解析复杂json的方法实例详解

     1、在PL/SQL中写json串,无需声明json对象,只需直接拼接成格式正确的json字符串即可,因此数据库对象间json串的传递完全可以用varchar2或clob来代替。  2、结构复杂的json串节点元素值基本上可

    Java开发详解.zip

    031708_【第17章:Java数据库编程】_处理大数据对象(1)—处理CLOB数据笔记.pdf 031709_【第17章:Java数据库编程】_处理大数据对象(2)—处理BLOB数据笔记.pdf 031710_【第17章:Java数据库编程】_...

    Javashop开发规范V2.2

    xml Mysql Oracle SqlServer int int NUMBER smallint int(1) smallint(1) NUMBER(2) int memo text CLOB text datetime datetime TIMESTAMP datetime long bigint NUMBER bigint decimal decimal NUMBER(20,2) ...

    UniDAC 7.1.4

    UniDAC can work with such servers as Oracle, Microsoft SQL Server, MySQL, Interbase, Firebird. The UniDAC library is designed to help programmers develop faster and cleaner cross-database ...

Global site tag (gtag.js) - Google Analytics