A Comparing the LOB Interfaces

The following tables compare the eight LOB programmatic interfaces by listing their functions and methods used to operate on LOBs. The tables are split in two only to accommodate all eight interfaces.

APIs for BLOBs and CLOBs

Table A-1 APIs for BLOBs and CLOBs (PL/SQL, JDBC, OCI, OCCI)

PL/SQL: DBMS_LOB (dbmslob.sql) JDBC (Java) interfaces java.sql.Clob and java.sql.Blob OCI (C/ocip.h) OCCI (C++/occiData.h) classes: Clob and Blob
    OCILobLocatorIsInit() isInitialized()
ISSECUREFILE isSecureFile()    
OPEN open() OCILobOpen() Open()
ISOPEN isOpen() OCILobIsOpen() isOpen()
CLOSE close() OCILobClose() Close()
CREATETEMPORARY createTemporary OCILobCreateTemporary()  
FREETEMPORARY freeTemporary OCILobFreeTemporary()  
ISTEMPORARY isTemporary OCILobIsTemporary()  
GETLENGTH length() OCIGetLobLength2() length()
GET_STORAGE_LIMIT   OCILobGetStorageLimit()  
GETCHUNKSIZE getChunkSize() OCILobGetChunkSize() getChunkSize()
READ Blob: getBytes() getBinaryStream() OciLobRead2() OCILobArrayRead() read()
Clob: getChars() getCharacterStream() getAsciiStream()
SUBSTR getSubString    
INSTR position    
    OCILobCharSetId() getCharSetId() (Clob only)
    OCILobCharSetForm() getCharSetForm (Clob only)
WRITE Blob: setBytes() setBinaryStream() OCILobWrite2() OCILobArrayWrite() write
Clob: setString() setCharacterStream()
WRITEAPPEND use length() and then putString() or putBytes() OCILobWriteAppend2()  
ERASE   OCILobErase2()  
TRIM truncate() OCILobTrim2() trim
  equal OCILobIsEqual() Use operators == / !=
COMPARE Use DBMS_LOB    
APPEND Use length() and then putString() or putBytes() OCILobWriteAppend2()  
COPY Use read and write OCILobCopy2() copy()
Use operator := Use operator = OCILobLocatorAssign() use operator =
CONVERTTOBLOB      
CONVERTTOCLOB      
      closeStream()
GETOPTIONS   OCILobGetOptions() getOptions()
SETOPTIONS   OCILobSetOptions() setOptions()
GETCONTENTTYPE   OciLobGetContentType() getContentType()
SETCONTENTTYPE   OciLobSetContentType() setContentType()
FRAGMENT_DELETE FRAGMENT_INSERT FRAGMENT_MOVE FRAGMENT_REPLACE      

Table A-2 APIs for BLOB and CLOB (PL/SQL, .NET, Pro*C/C++, Pro COBOL)

PL/SQL: DBMS_LOB (dbmslob.sql) ODP.NET Classes: OracleClob and OracleBlob Pro*C/C++ and Pro*COBOL
OPEN BeginChunkWrite OPEN
ISOPEN IsInChunkWriteMode DESCRIBE [ISOPEN]
CLOSE EndChunkWrite CLOSE
CREATETEMPORARY Add() CREATE TEMPORARY
FREETEMPORARY Dispose() and Close() FREE TEMPORARY
ISTEMPORARY IsTemporary() DESCRIBE [ISTEMPORARY]
GETLENGTH Length() DESCRIBE [LENGTH]
GETCHUNKSIZE OptimumChunkSize() DESCRIBE [CHUNKSIZE]
READ Value Read READ
INSTR Search  
WRITE Write WRITE
WRITEAPPEND Append WRITE APPEND
ERASE Erase ERASE
TRIM SetLength TRIM
  IsEqual  
COMPARE Compare  
APPEND Append APPEND
COPY CopyTo COPY
Use operator := Clone ASSIGN

APIs for BFILEs

Table A-3 APIs for BFILEs (PL/SQL, JDBC, OCI, OCCI)

PL/SQL: DBMS_LOB (dbmslob.sql) JDBC (Java) interface oracle.jdbc.OracleBfile OCI (C/ociap.h) OCCI (C++/occiData.h) class: Bfile
FILEEXISTS fileExists OciLobFileExist() fileExists()
FILEGETNAME getDirAlias, getName OCILobFileGetName() getDirAlias()getFileName()
SQL BFILENAME operator SQL BFILENAME operator OCILobFileSetName() setName()
OPEN openFile OCILobOpen() open()
ISOPEN isFileOpen() OCILobIsOpen() isOpen()
CLOSE closeFile OCILobClose() close()
FILECLOSEALL Use DBMS_LOB OCILobFileCloseAll()  
GETLENGTH length OCILobGetLength2() length()
READ getBytes()getBinaryStream() OCILobRead()OCILobArrayRead() read
SUBSTR getBytes    
INSTR position    
Use operator := Use operator = OCILobLocatorAssign() Use operator =
LOADCLOBFROMFILE LOADBLOBFROMFILE   OCILobLoadFromFile2() Blob.copy() or Clob.copy()
COMPARE   N/A  
N/A equal OCILobIsEqual() Use operators ==/!=

Table A-4 APIs for BFILEs (PL/SQL, ODP.NET, Pro*C/C++ and Pro*COBOL)

PL/SQL: DBMS_LOB (dbmslob.sql) ODP.NET Class: OracleBfile Pro*C/C++ and Pro*COBOL
FILEEXISTS FileExists DESCRIBE [FILEEXISTS]
FILEGETNAME DirectoryName, Filename DESCRIBE [DIRECTORY, FILENAME]
SQL BFILENAME operator DirectoryName, Filename FILE SET
OPEN OpenFile OPEN
ISOPEN IsOpen() DESCRIBE [ISOPEN]
CLOSE CloseFile CLOSE
FILECLOSEALL N/A FILE CLOSE ALL
GETLENGTH Length DESCRIBE [LENGTH]
READ Value,Read READ
SUBSTR    
INSTR Search  
Use operator :=    
LOADCLOBFROMFILE LOADBLOBFROMFILE    
COMPARE Compare  
N/A IsEqual