具体可以参考oracle的文档,有关OO4O方面的文章。
一个例子:
存储:
create table t (
id number(10),
tmp_file blob,
primary key(id));
/***  ASP 程序 *****/ formData = Request.BinaryRead(Request.TotalBytes())
sSelectSQL = "SELECT id,tmp_file  FROM t WHERE id = " & id
sInsertSQL = "insert into  t(id,tmp_file)" & _
" values("&id&",EMPTY_BLOB())"

Set OO4OSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OO4OSession.OpenDatabase(sDataBase, sUserPsw, 0)

OraDatabase.begintrans
'OraDatabase.AutoCommit = true
OraDatabase.ExecuteSQL ( sInsertSQL )
set OraDynaset=OraDatabase.CreateDynaset(sSelectSQL,ORADYN_DEFAULT )
OraDynaset.Edit
OraDynaset.Fields(sFieldImage).AppendChunk  sFormData 
OraDynaset.Update
OraDatabase.committrans

解决方案 »

  1.   

    续上:
    sDataBase = 数据库实例名, sUserPsw = 相关的用户名/密码 .输出文件:/* 假设原来保存的是Word文档 */ BytesRead = 0 
    'Reading in 32K chunks 
    ChunkSize= 32768   Set OO4OSession = CreateObject("OracleInProcServer.XOraSession")
    Set OraDatabase = OO4OSession.OpenDatabase(sDataBase, sUserPsw, 0)
    Set OraDynaset=OraDatabase.CreateDynaset(sSQL,ORADYN_DEFAULT)

    if not OraDynaset.EOF then
    Response.ContentType = "application/msword"
    i=0
    Do 
    BytesRead = OraDynaset.Fields(sFieldImage).GetChunkByteEx(CurChunkEx,i * ChunkSize, ChunkSize) 
      if BytesRead > 0 then 
     Response.BinaryWrite CurChunkEx 
       end if
       i=i+1 
    Loop Until BytesRead < ChunkSize
      

  2.   

    续上:
    sSQL = "SELECT tmp_file  FROM t WHERE id = " & id
    完。
      

  3.   

    BLOB是Oralce的一种大型对象数据类型。
    大型对象数据类型分内部和外部两种,BLOB、CLOB属于内部的大型对象, BFILE为外部大对象。不说多余的话了,说一下怎样用BLOB吧:
    Oracle 有一个包:DBMS_LOB支持大型对象功能的编程,它的函数/过程如下:DBMS_JOB.APPEND(目标定位器,源定位器)
    DBMS_JOB.READ(定位器,amount,offset, buffer) 
         --amount:从文件中读取到缓冲中的字节数,
         --offset 偏移值
    DBMS_JOB.WRITE(定位器,amount,offset, buffer)
    DBMS_JOB.OPEN(定位器)
    DBMS_JOB.CLOSE(定位器)
    DBMS_JOB.ISOPEN(定位器)举个例子:
    用外部大型对象1.建立一个目录对象:
    CREATE DIRECTORY IMAGES_DIR AS 'C:\TEMP'2.
    DECLARE
     V_FILE BFILE;
    BEGIN
       V_FILE := BFILENAME('IMAGES_DIR', 'image1.gif');
       IF DBMS_LOB.FILEEXISTS(V_FILE) = 1 THEN   --等于1为文件存在。
        INSERT INTO TABNAME (bfile列)VALUES(V_FILE);
            COMMIT;
       END IF;
    END;
      

  4.   

    谢谢两位前辈的热心帮助! linysh哥:asp我看不懂啊wangybyangxr(王永斌) :是在sql plus 中执行麽,我试了,为什么不行呢
    不用插在blob列中麽?急盼答复……