最近用到Oracle中的NClob,在网上找来几天,终于东拼西凑,搞出来啦,拿来跟大家分享一下!
创建一个简单的表test
CREATE TABLE "SINI"."TEST"
( "ID" NUMBER(10,0),
"CONTENT" CLOB
)
--向表test中插入数据的存储过程 insertTest
CREATE OR REPLACE PROCEDURE insertTest
(
myid test.id%TYPE,
mycontent test.content%TYPE
)
AS
BEGIN
--向表中插入数据
INSERT INTO test(id,content) VALUES(myid,mycontent);
END insertTest;
测试类:
package com.sini.notice.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import oracle.jdbc.OracleConnection;
import oracle.sql.CLOB;
public class Test {
private Connection conn = null;
private String url = null;
private String user = null;
private String password = null;
public Test() {
url = "jdbc:oracle:thin:@192.168.1.108:1521:hqh";
user = "sini";
password = "sini";
}
public Connection getConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(url, user, password);
System.out.println("connect is ok");
return conn;
} catch (InstantiationException e) {
e.printStackTrace();
return null;
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public void testInsert() {
try {
Connection con = getConnection();
CallableStatement proc = con.prepareCall(
"{ call insertTest(?,?) }");
proc.setInt(1, 1);
CLOB clob = new CLOB((OracleConnection) con);
clob = oracle.sql.CLOB.createTemporary(con,false,1);
//对CLOB对象赋值
clob.putString(1,"fffffffffjggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffff");
proc.setClob(2,clob);
proc.execute();
} catch (SQLException ex2) {
ex2.printStackTrace();
} catch (Exception ex2) {
ex2.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex1) {
}
}
}
public static void main(String[] args) {
Test test = new Test();
test.testInsert();
}
}
注意:如果出现错误“无法从套接字读取更多的数据”,
解决办法:将Oracle9i的JAR包换成Oracle10g的JAR包即可(我用的是ojdbc14.jar,1.29M,注意大小哦)。(此信息来自http://www.100631.com/blog/article.asp?id=318)
Java操作含Clob或者NClob数据类型的存储过程实例
原创
©著作权归作者所有:来自51CTO博客作者mb64660286caedc的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Oracle 常用SQL查询语句
下一篇:Oracle函数的创建
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
mongodb存储的数据类型 mongodb存储过程
虽然官方不推荐使用将业务逻辑存储在数据库中,并且提示在 mongodb 中执行 javascript 存在性能限制。但实际上,将 javascript 函数存储在 mongodb 中执行,还是非常有必要的,更方便,许多场景下性能会更好(在执行大量查询处理时不需要将数据传回客户端引擎)。在目前的版本中,我们任然可以将 javascript 函数存储在 mongodb 内置的一个特殊集合 db.sys
mongodb存储的数据类型 mongodb 存储过程 遍历表数据 javascript mongodb 存储过程