用Java和oracle实现BLOB字段的字符串读取Oracle认证考试

文章作者 100test 发表时间 2009:08:05 17:33:50
来源 100Test.Com百考试题网


"tb42" class="mar10">   阅读了一个帖子“有没有可能写出比Oracle函数更快的外部存储过程”(http://www.itpub.net/thread-1117461-1-1.html
  突发灵感,加上原来有一个需求,需要从BLOB字段(本来就是字符型的内容)中直接读取成为字符串,需要java开发人员的支持,想了想与其求人不如求己,
  oracle.sql.BLOB的相关文档参看(http://www.princeton.edu/~storacle/jdbc8_doc/oracle.sql.BLOB.html)
  java能够调用Oracle的存储过程,反之oracle也能用java来开发外部存储过程,这样java和oracle的相互界限就已经不明确了。
  当然关系型数据库最好做自己应该做的事情而不是大包大揽做所有的非数据库应该做的事情。
  ——开发java类
  create or replace and compile java source named BLOBObject as
  package MyOracle.BLOB. --自己定义的package
  import java.io.*. --外部引用到的java包
  import oracle.sql.*.
  public class BLOBObject
  {
  public static String ConvertBLOBtoString(oracle.sql.BLOB BlobContent)
  {
  byte[] msgContent= BlobContent.getBytes(). //BLOB转换为字节数组
  byte[] bytes. //BLOB临时存储字节数组
  String newStr = "". //返回字符串
  int i=1. //循环变量
  long BlobLength. //BLOB字段长度
  try
  {
  BlobLength=BlobContent.length(). //获取BLOB长度
  if (msgContent == null || BlobLength==0) //如果为空,返回空值
  {
  return "".
  }
  else //处理BLOB为字符串
  {
  /*
  while(i
  {
  bytes= BlobContent.getBytes(i,1024) .
  i=i 1024.
  newStr = newStr new String(bytes,"gb2312".
  }
  */
  newStr = new String(BlobContent.getBytes(1,900),"gb2312" "....". //简化处理,只取前900字节
  return newStr.
  }
  }
  catch(Exception e) //oracle异常捕获
  {
  e.printStackTrace().
  }
  return newStr.
  }
  }
  ——然后在Oracle中把这个类导入成为一个函数,执行命令
  create or replace function ConvertBLOB(blobObject BLOB)
  return varchar2
  as language java name
  MyOracle.BLOB.BLOBObject.ConvertBLOBtoString(oracle.sql.BLOB) return java.lang.String;
  ——执行相应的操作
  0select ConvertBLOB(BLOBField),dbms_lob.getlength(BLOBField),BLOBFieldfrom TableName
  以上代码均在PL/SQL developer中开发并调试通过,很有意思

  编辑特别推荐:

  oracle认证考试费用

  Oracle的入门心得



相关文章


oracle辅导:彻底删除oracle的步骤Oracle认证考试
Oracle数据库表连接方式及常见用法Oracle认证考试
Oracle使用序列创建自增字段Oracle认证考试
利用CTAS建立表格注意事项Oracle认证考试
用Java和oracle实现BLOB字段的字符串读取Oracle认证考试
oracle中将字典管理表空间转换为本地管理表空间Oracle认证考试
Oracle数据库归档Oracle认证考试
Oracle查询表空间使用情况(经典篇)Oracle认证考试
2009财年第四季度众多客户采用Oracle产品Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛