C# Table of Blob

I want to pass a collection of blob as a parameter in the procedure.
Collection of simple types I pass this way:
OracleParameter variable = new OracleParameter();
variable.ParameterName = "IN_VARIABLE";
variable.OracleDbType = OracleDbType.Object;
variable.UdtTypeName = "TYPE_NT_TBL_N";
variable.Direction = ParameterDirection.Input;
variable.Value = new TableOfNumber { Value = variables.ToArray() };
cmd.Parameters.Add(variable);
How do I pass a collection of blob?

This code worked for me.
I used ODT to generate the custom class originally, but it looks like a bug in what it generated. It generated the member as byte[][] and there was an initialization problem, so I changed it to OracleBlob[].
Hope it helps,
Greg
DDL
======
create table blobtable (col1 number, col2 blob);
create type blobtabtyp as table of blob;
procedure blobtabtypproc (b1 in blobtabtyp, n1 out number) as
begin
   for i in 1 .. b1.count loop
     insert into blobtable values(i,b1(i));
   end loop;
   n1 := b1.count;
end;PROGRAM.CS
===========
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;
namespace tableofblob
    class Program
        static void Main(string[] args)
            using(OracleConnection con = new OracleConnection("data source=orcl;user id=scott;password=tiger"))
                con.Open();
                OracleBlob[] blobs = new OracleBlob[5];
                for (int i=0;i<5;i++)
                    OracleBlob ob = new OracleBlob(con);
                    byte b = (byte)i;
                    byte[] ba = new byte[]{b,b,b,b,b,b};
                    ob.Write(ba, 0, ba.Length) ;
                    blobs[i] = ob;
                BLOBTABTYP btt = new BLOBTABTYP();
                btt.Value = blobs;
                using (OracleCommand cmd = new OracleCommand("blobtabtypproc", con))
                    cmd.CommandType = CommandType.StoredProcedure;
                    OracleParameter p1 = new OracleParameter("", OracleDbType.Object, ParameterDirection.Input);
                    p1.UdtTypeName = "SCOTT.BLOBTABTYP";
                    p1.Value = btt;
                    cmd.Parameters.Add(p1);
                    OracleParameter p2 = new OracleParameter("", OracleDbType.Int32, ParameterDirection.Output);
                    cmd.Parameters.Add(p2);
                    cmd.ExecuteNonQuery();
}BLOBTABTYP.CS
============
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.3615
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
namespace tableofblob {
    using System;
    using Oracle.DataAccess.Client;
    using Oracle.DataAccess.Types;
    using System.Xml.Serialization;
    using System.Xml.Schema;
    public class BLOBTABTYP : INullable, IOracleCustomType, IXmlSerializable {
        private bool m_IsNull;
        private OracleBlob[] m_BLOBTABTYP;
        private OracleUdtStatus[] m_statusArray;
        public BLOBTABTYP() {
            // TODO : Add code to initialise the object
        public BLOBTABTYP(string str) {
            // TODO : Add code to initialise the object based on the given string
        public virtual bool IsNull {
            get {
                return this.m_IsNull;
        public static BLOBTABTYP Null {
            get {
                BLOBTABTYP obj = new BLOBTABTYP();
                obj.m_IsNull = true;
                return obj;
        [OracleArrayMappingAttribute()]
        public virtual OracleBlob[] Value {
            get {
                return this.m_BLOBTABTYP;
            set {
                this.m_BLOBTABTYP = value;
        public virtual OracleUdtStatus[] StatusArray {
            get {
                return this.m_statusArray;
            set {
                this.m_statusArray = value;
        public virtual void FromCustomObject(Oracle.DataAccess.Client.OracleConnection con, System.IntPtr pUdt) {
            object objectStatusArray = ((object)(m_statusArray));
            OracleUdt.SetValue(con, pUdt, 0, this.m_BLOBTABTYP, objectStatusArray);
        public virtual void ToCustomObject(Oracle.DataAccess.Client.OracleConnection con, System.IntPtr pUdt) {
            object objectStatusArray = null;
            this.m_BLOBTABTYP = ((OracleBlob[])(OracleUdt.GetValue(con, pUdt, 0, out objectStatusArray)));
            this.m_statusArray = ((OracleUdtStatus[])(objectStatusArray));
        public virtual void ReadXml(System.Xml.XmlReader reader) {
            // TODO : Read Serialized Xml Data
        public virtual void WriteXml(System.Xml.XmlWriter writer) {
            // TODO : Serialize object to xml data
        public virtual XmlSchema GetSchema() {
            // TODO : Implement GetSchema
            return null;
        public override string ToString() {
            // TODO : Return a string that represents the current object
            return "";
        public static BLOBTABTYP Parse(string str) {
            // TODO : Add code needed to parse the string and get the object represented by the string
            return new BLOBTABTYP();
    // Factory to create an object for the above class
    [OracleCustomTypeMappingAttribute("SCOTT.BLOBTABTYP")]
    public class BLOBTABTYPFactory : IOracleCustomTypeFactory, IOracleArrayTypeFactory {
        public virtual IOracleCustomType CreateObject() {
            BLOBTABTYP obj = new BLOBTABTYP();
            return obj;
        public virtual System.Array CreateArray(int length) {
            OracleBlob[] collElem = new OracleBlob[length];
            return collElem;
        public virtual System.Array CreateStatusArray(int length) {
            OracleUdtStatus[] udtStatus = new OracleUdtStatus[length];
            return udtStatus;
}

Similar Messages

  • Error while importing a table with BLOB column

    Hi,
    I am having a table with BLOB column. When I export such a table it gets exported correctly, but when I import the same in different schema having different tablespace it throws error
    IMP-00017: following statement failed with ORACLE error 959:
    "CREATE TABLE "CMM_PARTY_DOC" ("PDOC_DOC_ID" VARCHAR2(10), "PDOC_PTY_ID" VAR"
    "CHAR2(10), "PDOC_DOCDTL_ID" VARCHAR2(10), "PDOC_DOC_DESC" VARCHAR2(100), "P"
    "DOC_DOC_DTL_DESC" VARCHAR2(100), "PDOC_RCVD_YN" VARCHAR2(1), "PDOC_UPLOAD_D"
    "ATA" BLOB, "PDOC_UPD_USER" VARCHAR2(10), "PDOC_UPD_DATE" DATE, "PDOC_CRE_US"
    "ER" VARCHAR2(10) NOT NULL ENABLE, "PDOC_CRE_DATE" DATE NOT NULL ENABLE) PC"
    "TFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS"
    " 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TS_AGIMSAPPOLOLIVE030"
    "4" LOGGING NOCOMPRESS LOB ("PDOC_UPLOAD_DATA") STORE AS (TABLESPACE "TS_AG"
    "IMSAPPOLOLIVE0304" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE L"
    "OGGING STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEF"
    "AULT))"
    IMP-00003: ORACLE error 959 encountered
    ORA-00959: tablespace 'TS_AGIMSAPPOLOLIVE0304' does not exist
    I used the import command as follows :
    imp <user/pwd@conn> file=<dmpfile.dmp> fromuser=<fromuser> touser=<touser> log=<logfile.log>
    What can I do so that this table gets imported correctly?
    Also tell me "whether the BLOB is stored in different tablespace than the default tablespace of the user?"
    Thanks in advance.

    Hello,
    U can either
    1) create a tablespace with the same name in destination where you are trying to import.
    2) get the ddl of the table, modify the tablespace name to reflect the existing tablespace name in destination and run the ddl in the destination database, and run your import command with option ignore=y--> which will ignore all the create errors.
    Regards,
    Vinay

  • Search a text in a multiple tables and one table has BLOB column

    Hi,
    I couldn't find a solution/examples for below scenario in oracle text documentation or related forums.
    I need to search a text in a multiple tables,in that one table has blob column which is used to store the documnents(pdf,doc,jpg..etc) and other tables have varchar2 columns,These tables have realation each other.
    Please provide a sample examples for above scenario.
    Thanks in advance..

    Have a look at my blog entry here:
    https://blogs.oracle.com/searchtech/entry/indexing_data_from_multiple_tables
    That describes two methods of achieving what you are looking for.

  • I can't import a table contains BLOB column  from one user to another user.

    1) I create two user both have connect role,and each has its own tablespace, DDL:
    create user d2zd identified by d2zd default tablespace d2zd quota unlimited on d2zd account unlock;
    grant connect to d2zd;
    create user d3zd identified by d3zd default tablespace d3zd quota unlimited on d3zd account unlock;
    grant connect to d3zd;
    2)Then enter oracle as d2zd and create a table contains BLOB column and insert data to the table.
    3) export d2zd as follow:
    exp d2zd/d2zd file=d2zd.dmp
    4) import to d3zd as follow:
    imp d3zd/d3zd fromuser=d2zd touser=d3zd file=d2zd.dmp
    the question is the table with BOLB colum can't be import,
    it says:have no privilege on tablespace d2zd.
    How can I import a table contains BLOB column from one user to another user?

    Hi - the reason for as our friend already told ist that a blob can be stored outside of the table segment, in another Tablespace, This is for performance reason.
    Sou you would need to have Quota on two tablespaces.
    the one which holds the table segment the other which holds the blob(segment).
    Regards
    Carl
    Message was edited by:
    kreitsch

  • "Error: Document not found (WWC-46000)" with a form based on a table with blob item

    Hi all,
    I have to manage a table-based form. One of the fields of the table is BLOB and the corrisponding field of the form is HIDDEN.
    When I push the INSERT button all works well but when I try to UPDATE I get "Error: Document not found. (WWC-46000)".
    Have you some suggestions ?
    Thanks,
    Antonino
    p.s. Oracle Portal 3.0.7.6.2 / NT
    null

    Sorry, I think I did not explain well my problem.
    Imagine this simple table:
    key number;
    description varchar2(50);
    image blob;
    I need to make a form that contains the corresponding "key" field and the "description" field but not the "image" one. I don't want to allow the end user to upload images!
    When I insert a row the form works well and in the "image" field of the table an empty blob or null (now I don't remember) is stored: that's ok.
    Now imagine I want to change the value of the "description" field. I submit a query for the right key, I type a new value for the description and finally I push UPDATE button but....an error occours.
    I think this error is related with the Blob item of the table but I'm not sure.
    Thanks again,
    Antonino
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Dmitry Nonkin([email protected]):
    Antonino,
    If I understood the problem correctly:
    The form's item type for BLOB column used to upload content cannot be hidden, that's why we have a special item type FileUpload(binary).
    Thanks,
    Dmitry<HR></BLOCKQUOTE>
    null

  • Join two source tables and replicat into a target table with BLOB

    Hi,
    I am working on an integration to source transaction data from legacy application to ESB using GG.
    What I need to do is join two source tables (to de-normalize the area_id) to form the transaction detail, then transform by concatenate the transaction detail fields into a value only CSV, replicate it on the target ESB IN_DATA table's BLOB content field.
    Based on what I had researched, lookup by join two source tables require SQLEXEC, which doesn't support BLOB.
    What alternatives are there and what GG recommend in such use case?
    Any helpful advice is much appreciated.
    thanks,
    Xiaocun

    Xiaocun,
    Not sure what you're data looks like but it's possible the the comma separated value (CSV) requirement may be solved by something like this in your MAP statement:
    colmap (usedefaults,
    my_blob = @STRCAT (col02, ",", col03, ",", col04)
    Since this is not 1:1 you'll be using a sourcedefs file, which is nice because it will do the datatype conversion for you under the covers (also a nice trick when migrating long raws to blobs). So col02 can be varchar2, col03 a number, and col04 a clob and they'll convert in real-time.
    Mapping two tables to one is simple enough with two MAP statements, the harder challenge is joining operations from separate transactions because OGG is operation based and doesn't work on aggregates. It's possible you could end up using a combination of built in parameters and funcations with SQLEXEC and SQL/PL/SQL for more complicated scenarios, all depending on the design of the target table. But you have several scenarios to address.
    For example, is the target table really a history table or are you actually going to delete from it? If just the child is deleted but you don't want to delete the whole row yet, you may want to use NOCOMPRESSDELETES & UPDATEDELETES and COLMAP a new flag column to denote it was deleted. It's likely that the insert on the child may really mean an update to the target (see UPDATEINSERTS).
    If you need to update the LOB by appending or prepending new data then that's going to require some custom work, staging tables and a looping script, or a user exit.
    Some parameters you may want to become familiar with if not already:
    COLS | COLSEXCEPT
    COLMAP
    OVERRIDEDUPS
    INSERTDELETES
    INSERTMISSINGUPDATES
    INSERTUPDATES
    GETDELETES | IGNOREDELETES
    GETINSERTS | IGNOREINSERTS
    GETUPDATES | IGNOREUPDATES
    Good luck,
    -joe

  • Dowanload pdf file stored in table as blob data.

    Hi,
    Ive critical thing to do:
    creating a link on a page region to download pdf files stored in a table as blob files.
    Ive a set of these pdf files in my table but now i need a way to download(not upload) these files onto local drive....any idea on this is appreciated.
    Apex 4.1.x&oracle11g
    thanks.

    Seawolf68 wrote:
    This is a great article for doing bothWell it was in 2009. Where the OP has taken the trouble to supply their APEX version, it helps to provide documentation to match, especially where improved techniques are available: About BLOB Support in Forms and Reports

  • Insert record in table having BLOB datatype

    Hi All,
    I have a table with BLOB datatype, Pls assist me how to insert a record in this table?
    CREATE TABLE document_BLOB_tab (
    doc_id_no NUMBER
    , doc_name VARCHAR2(200)
    , doc_value BLOB);
    What are the process to execute DBMS_LOB.fileOpen ?
    Rgds
    Sarfaraz

    1- Create a table that has a list of all directory, filenames combination
    SQL> create table listpic (directory varchar2(10), filename varchar2(10));
    Table created.
    2- Insert into that table all your directories and the filenames of the images within each
    directory (directory, filename) combination
    on my file system, I have
    d:\tars\samples1\lilies.jpg
    d:\tars\samples1\Sunset.jpg
    d:\tars\samples2\Blue.jpg
    d:\tars\samples1\Winter.jpg
    Here is my insert statment
    SQL> insert into listpic values('Samples1', 'lilies.jpg');
    1 row created.
    SQL> insert into listpic values('Samples1', 'Sunset.jpg');
    1 row created.
    SQL> insert into listpic values('Samples2', 'Blue.jpg');
    1 row created.
    SQL> insert into listpic values('Samples2', 'Winter.jpg');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from listpic;
    DIRECTORY FILENAME
    Samples1 lilies.jpg
    Samples1 Sunset.jpg
    Samples2 Blue.jpg
    Samples2 Winter.jpg
    3- Create the table where you are going to store your pictures
    SQL> create table pictures (id number(5), image blob);
    Table created.
    4- Create a directory pointing to the common parent Directory
    SQL> create or replace directory IMAGES as 'd:\tars';
    Directory created.
    5- Create the following procedure to insert the image
    SQL> set serveroutput on
    SQL> create or replace procedure insert_image as
    2 f_lob bfile;
    3 b_lob blob;
    4 i number := 1;
    5 cursor image_cur is select directory, filename from listpic;
    6 pic_rec image_cur%ROWTYPE;
    7 begin
    8
    9 OPEN image_cur;
    10 Loop
    11 fetch image_cur into pic_rec;
    12 EXIT WHEN image_cur%NOTFOUND;
    13 insert into pictures values ( i, empty_blob() )
    14 return image into b_lob;
    15
    16 f_lob := bfilename( 'IMAGES','\'||pic_rec.DIRECTORY||'\'||pic_rec.FILENAME);
    17 dbms_lob.fileopen(f_lob, dbms_lob.file_readonly);
    18 dbms_lob.loadfromfile( b_lob, f_lob, dbms_lob.getlength(f_lob) );
    19 dbms_lob.fileclose(f_lob);
    20 dbms_output.put_line (pic_rec.directory ||'\'||pic_rec.filename);
    21 commit;
    22 i := i+1;
    23 END LOOP;
    24 end;
    25 /
    Procedure created.
    6- execute the procedure
    SQL> exec insert_image;
    Samples1\lilies.jpg
    Samples1\Sunset.jpg
    Samples2\Blue.jpg
    Samples2\Winter.jpg
    PL/SQL procedure successfully completed.
    SQL> select count(*) from pictures;
    COUNT(*)
    4
    SQL> select length(image) from pictures;
    LENGTH(IMAGE)
    83794
    71189
    28521
    105542
    Image has been uploaded to the dataabase.

  • How to extract files stored in 9ifs to 9i Database Table's BLOB Column

    Dear All,
    I am new for 9ifs. Now my client need to retrieve the files which is stored in 9i Database Table's BLOB Column. Actually the files are stored in 9ifs. Therefore we now want to write a Java program to retrieve the files from 9ifs to 9i Database Table's BLOB Column for my client.
    The Java program will be loaded as Java Procedure to 9i Database. Then the Java Procedure can be triggerred by DML of 9i Database.
    The Questions are:
    1. Can I use CM SDK (9ifs) to retrieve files form 9ifs to 9i Database?
    2. If the files are already stored in 9ifs, Can I use PL/SQL to copy the files from 9ifs to 9i Database?
    3. As the Java Procedure will run frequently, Any problem on 9i Database Java Pool?
    4. Any other advices to implement the above stituation depends on the Client must use the database link to retrieve our 9i Database data?
    Thanks a lot!

    To Get MySql recordset in dreamweaver.
    1. Dreamweaver
    2. File>new>html>create>
    3. File>save>untitle-1.php (make sure to use a php externsion)
    4.Database Panel(Window>Database)
    5.Click Application Tab
    6.Click Plus sign.
    7.click Recordset(query)
    8.Name it anything
    9.Define your connection
    10.Go down to database items
    11. Click Tables
    12. Click the appropriate table
    13. click test
    14.click ok
    To pull image from MySqlDataBase
    1Place cursor on page where you want the image.
    2 insert>Image
    3Select Image Source box appears.
    4Click select file form: Data Source(vs File System)
    5 Your recordset will display
    6 Select the record.
    7 Click ok

  • Problem while importing table with blob datatype

    hi i am having a database 9i on windows xp and dev database 9i on AIX 5.2
    while i am taking export of normal tables and trying to import i am successful.but when i am trying to import a table with blob datatype it is throwing "tablespace <tablespace_name> doesn't exist" error
    here how i followed.
    SQL*Plus: Release 9.2.0.1.0 - Production on Mon Oct 8 14:08:29 2007
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    Enter user-name: test@test
    Enter password: ****
    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    SQL> create table x(photo blob);
    Table created.
    exporting:
    D:\>exp file=x.dmp log=x.log tables='TEST.X'
    Export: Release 9.2.0.1.0 - Production on Mon Oct 8 14:09:40 2007
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    Username: pavan@test
    Password:
    Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    About to export specified tables via Conventional Path ...
    Current user changed to TEST
    . . exporting table X 0 rows exported
    Export terminated successfully without warnings.
    importing:
    D:\>imp file=x.dmp log=ximp.log fromuser='TEST' touser='IBT' tables='X'
    Import: Release 9.2.0.1.0 - Production on Mon Oct 8 14:10:42 2007
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    Username: system@mch
    Password:
    Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
    With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining op
    tions
    JServer Release 9.2.0.6.0 - Production
    Export file created by EXPORT:V09.02.00 via conventional path
    Warning: the objects were exported by PAVAN, not by you
    import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
    import server uses US7ASCII character set (possible charset conversion)
    . importing TEST's objects into IBT
    IMP-00017: following statement failed with ORACLE error 959:
    "CREATE TABLE "X" ("PHOTO" BLOB) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS "
    "255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1) TABLESPACE "TESTTB"
    "S" LOGGING NOCOMPRESS LOB ("PHOTO") STORE AS (TABLESPACE "TESTTBS" ENABLE "
    "STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE STORAGE(INITIAL 65536 FREE"
    "LISTS 1 FREELIST GROUPS 1))"
    IMP-00003: ORACLE error 959 encountered
    ORA-00959: tablespace 'TESTTBS' does not exist
    Import terminated successfully with warnings.
    why it is happening for this table alone?plz help me
    thanks in advance

    Here is exerpt from {
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:378418239571}
    =============================================
    Hi Tom,
    I have a dump file containing blob datatypes, when i import the dump file in a schema it gives an
    error stating that the tablespace for Blob datatype does not exists. My question is how do i import
    the dump file in the default tablespace of the importing user.
    Followup March 2, 2004 - 7am US/Eastern:
    You'll have to precreate the table.
    do this:
    imp userid=u/p tables=that_table indexfile=that_table.sql
    edit that_table.sql, fix up the tablespace references to be whatever you want to be, run that sql.
    then imp with ignore=y
    for any MULTI-SEGMENT object (iot's with overflows, tables with lobs, partitioned tables, for
    example), you have to do this -- imp will not rewrite ALL of the tablespaces in that
    multi-tablespace create -- hence you either need to have the same tablespaces in place or precreate
    the object with the proper tablespaces.
    Only for single tablespace segments will imp rewrite the create to go into the default if the
    requested tablespace does not exist.
    ===================================================
    To summarize: precreate target table when importing multi-segment tables

  • Global Temp table with BLOB causing session crash

    Hi,
    i have a table as follows:
    create global temporary table spg_file_import (
    name varchar2 (128) constraint sfi_nam_ck not null,
    mime_type varchar2 (128),
    doc_size number,
    dad_charset varchar2 (128),
    last_updated date,
    content_type varchar2 (128),
    content long raw,
    blob_content blob
    on commit delete rows
    this is my 9ias 'document' table thats used to receive uploaded files which i modified to be global temporary.
    what i want to do is:
    a)upload a text file (xml)
    b) convert that file to clob
    c) store that file in new permanent table as clob
    d) commit (hence delete temp table rows as they are no longer necessary)
    to test it i have:
    CREATE OR REPLACE procedure daz_html
    as
    begin
    htp.p(' <FORM enctype="multipart/form-data" action="daz_fu" method="POST">');
    htp.p(' <p>');
    htp.p(' File to upload: <INPUT type="file" name="p_file_in"><br>');
    htp.p(' <p><INPUT type="submit">');
    htp.p(' </form>');
    htp.p('</body>');
    htp.p('</html>');
    end;
    CREATE OR REPLACE procedure daz_fu (
    p_file_in varchar2
    as
    -- BLOB Stream locator
    v_raw blob;
    v_clob clob;
    v_blob_length number;
    v_length number;
    v_buffer varchar2(32767);
    v_pos number := 1;
    begin
    -- Get xml document from transient 9iAs data store.
    select blob_content
    into v_raw
    from spg_file_import
    where name = p_file_in;
    -- create temp LOB
    dbms_lob.createtemporary(v_clob, false);
    -- get BLOB length
    v_blob_length := dbms_lob.getlength(v_raw);
    loop
    -- get length to read. this is set as a max length of 32767
    v_length := least((v_blob_length - (v_pos-1)),32767);
    -- assign BLOB to a varchar2 buffer in preparation to convert to CLOB
    v_buffer := utl_raw.cast_to_varchar2(dbms_lob.substr(v_raw, v_length, v_pos));
    -- now write out to the CLOB
    dbms_lob.writeappend(v_clob, v_length, v_buffer);
    -- increment our position.
    v_pos := v_pos + v_length;
    -- exit when we are done.
    exit when v_pos >= v_blob_length;
    end loop;
    commit;
    htp.p('commit done!');
    end;
    now if i upload a small text file (about 5kb) it works with no problem.
    however if I upload a large text file (say about 1Mb) it crashes oracle with:
    Fri, 26 Jul 2002 11:49:24 GMT
    ORA-03113: end-of-file on communication channel
    DAD name: spgd1
    PROCEDURE : daz_fu
    USER : spg
    URL : http://www.bracknell.bt.co.uk/pls/spgd1/daz_fu
    PARAMETERS :
    ============
    p_file_in:
    F22210/Document.txt
    this produces a large trc file.. the trace file indicates the crash occured on the commit; line
    Current RBA:[0x4eb0.117.10]
    *** 2002-07-26 12:35:11.857
    ksedmp: internal or fatal error
    ORA-00600: internal error code, arguments: [kcblibr_user_found], [4294967295], [2], [12583564], [65], [], [], []
    Current SQL statement for this session:
    declare
    rc__ number;
    begin
    owa.init_cgi_env(:n__,:nm__,:v__);
    htp.HTBUF_LEN := 255;
    null;
    daz_fu(p_ref_in=>:p_ref_in,p_type_in=>:p_type_in,p_file_in=>:p_file_in);
    if (wpg_docload.is_file_download) then
    rc__ := 1;
    wpg_docload.get_download_file(:doc_info);
    null;
    commit;
    else
    rc__ := 0; null;
    commit;
    owa.get_page(:data__,:ndata__);
    end if;
    :rc__ := rc__;
    end;
    ----- PL/SQL Call Stack -----
    object line object
    handle number name
    812b1998 42 procedure SPG.DAZ_FU
    819dff90 7 anonymous block
    ----- Call Stack Trace -----
    If i reaplce the temporary table with a non-temp table of the same structure i get no problems what-so-ever. Am I doing something that I shouldnt be with global temporary tables?
    Thanks.

    This is on Oracle 8.1.7.2

  • How to insert Serialised Object(XML DOM) into Oracle Table(as BLOB or CLOB)

    we need a urgent help. How can we insert and retrieve the XML Document DOM Object into Oracle Table.Actually we used BLOB for insert the DOM Object,its inserted finely but we have a problem in retrieving that object, we got error when v're retrieving. so could you anyone tell us what's this exact problem and how can we reslove this problem If anyone knows or used this kind operation, pls let us know immediately.
    Thanks in advance.

    Please repost your question in the appropriate XML forum, http://forums.oracle.com/forums/index.jsp?cat=51

  • Table with BLOB  column re-partitioning

    Currently I have a table with a blob column Z partitioned on Column X I want to re-partition the table on Column Y is there a quick way of doing this.
    INSERT INTO SELECT * has limitations on the blob size I guess.
    Can someone explain this?
    Edited by: user10229350 on Mar 1, 2010 7:36 AM

    I am using hash partitioning looks like split partition doesn't apply for hash partition:
    "The SPLIT PARTITION clause of the ALTER TABLE or ALTER INDEX statement is used to redistribute the contents of a partition into two new partitions. Consider doing this when a partition becomes too large and causes backup, recovery, or maintenance operations to take a long time to complete. You can also use the SPLIT PARTITION clause to redistribute the I/O load.
    This clause cannot be used for hash partitions or subpartitions."

  • How to read/write a binary file from/to a table with BLOB column

    I have create a table with a column of data type BLOB.
    I can read/write an IMAGE file from/to the column of the table using:
    READ_IMAGE_FILE
    WRITE_IMAGE_FILE
    How can I do the same for other binary files, e.g. aaaa.zip?

    There is a package procedure dbms_lob.readblobfromfile to read BLOB's from file.
    http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_lob.htm#sthref3583
    To write a BLOB to file you can use a Java procedure (pre Oracle 9i R2) or utl_file.put_raw (there is no dbms_lob.writelobtofile).
    http://asktom.oracle.com/pls/ask/f?p=4950:8:1559124855641433424::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:6379798216275

  • Problem importing a table with blob's

    hi all, I'm facing the following situation.
    Source DB : 10.2.0.3 (client's DB)
    Destination DB (mine): 10.2.0.4
    I've a dump file (traditional) of a particular schema.
    I'm running import (imp) to import on my DB.
    It runs fine until it reaches one particular table. This table has 6 colums, 3 of them are BLOB.
    This table has 260000 rows (checked with export log).
    When import reaches row 152352 it stops loading data, but import is still running.
    what can I do to get more information from this situation in order to solve this problem?
    Any suggestion will be appreciated!
    Thanks in advance.

    Pl identify the source and target OS versions. Are there any useful messages in the alert.log ? How long did the export take ? Rule of thumb states import will take twice as long. Have you tried expdp/impdp instead ? Also see the following -
    How To Diagnose And Troubleshoot Import Or Datapump Import Hung Scenarios          (Doc ID 795034.1)
    How To Find The Cause of a Hanging Import Session          (Doc ID 184842.1)
    Import is Slow or Hangs          (Doc ID 1037231.6)
    Export and Import of Table with LOB Columns (like CLOB and BLOB) has Slow Performance          (Doc ID 281461.1)
    HTH
    Srini

Maybe you are looking for