Insert into a clob field in a procedure based form

Hi,
I have a table with a clob field. I wrote a procedure to insert into this table. Then I built a form based on this procedure. Here is my code:
drop table clob_test;
create table clob_test(id NUMBER, note CLOB);
insert into clob_test values(10,empty_clob());
Create or Replace PROCEDURE PROJECTS.SET_CLOB
( p_id IN CLOB_TEST.id%TYPE,
p_note IN VARCHAR2 default null)
as
v_loc CLOB;
v_amt binary_integer;
v_pos integer :=1;
v_clob varchar2(32000);
Begin
insert into clob_test values(p_id,empty_clob());
v_clob := p_note;
v_amt := LENGTH(v_clob);
select note into v_loc from clob_test where id = p_id;
DBMS_LOB.WRITE(v_loc,v_amt,v_pos,v_clob);
End;
When I try to insert into note field more than 4000 charaters. I got this error:
An unexpected error occurred: ORA-06502: PL/SQL: numeric or value error: character string buffer too small (WWV-16016)
Why this happens? I know portal form doesn't support clob, but this procedure deal directly with database. Can anyone from Oracle give me help? Thanks in advance!

I use a dynamic page instead of a form on the procedure. It's working.
Apparently Oracle is not supporting a varchar2 more than 4000 in any form format, even using textarea for p_note.

Similar Messages

  • Inserting to a clob field using cx_Oracle via a stored procedure

    Hello,
    Does anyone have experience using cx_Oracle to call a stored procedure which inserts to a clob field? I have found examples of doing this via straight SQL but I was hoping it was possible to do this via a stored procedure call. Thanks for any help you can provide.
    Jason

    And cursor.callproc('insert_clob_proc', (clob,))
    doesn't work for you?
    PrzemekYes - I should have been more clear in my original post. The callproc function works until we have a value which is over 32K. At values over 32K, we get an error message "ORA-01460: unimplemented or unreasonable conversion requested". I believe this is because we are sending the value as a string and so we would need to figure out how to send as a CLOB in cx_Oracle? Here is some code to use to test if interested...
    Oracle (Oracle Database 10g Release 10.1.0.4.0 - Production):
    CREATE TABLE clob_test (CLOB_FIELD CLOB);
    CREATE OR REPLACE PROCEDURE ins_clob_test (v_clob_field IN CLOB)
    AS
    BEGIN
    INSERT INTO clob_test (clob_field) VALUES (v_clob_field);
    END ins_clob_test;
    Python (2.5):
    conn = cx_Oracle.connect(xhash['oraclelogin'])
    cursor = conn.cursor()
    clob_var = 'Some test data' * 10000
    cursor.callproc('ins_clob_test',(clob_var,))
    conn.commit()
    cursor.close()
    conn.close()
    I should also mention that I am the Oracle developer and not the Python programmer - my knowledge of Python is very limited. I would like the Python programmers to use the procedures (packages) I have created to do their inserts but this situation has caused them to put the SQL directly in their code.
    Thanks again for any assistance you can provide.
    Jason

  • Inserting data into a CLOB Field

    I am trying to insert a 100,000+ byte string into a CLOB field in Oracle, but I'm getting a "string literal too long" error. I am using Visual Basic and ADO to try to accomplish this. My insert statement is:
    sql = "INSERT INTO IMAGE_VERSION " & _
    "(field1, field2, field3)" & _
    "VALUES('" & strNm & "', '" & strDt & "', '" & strData & "')"
    Field 3 is defined as a CLOB in the database. From what I understand, the CLOB can hold massive amounts of data.
    Can anyone lend a hand?

    Re: OTN Downloads

  • ORA-22275 inserting into the CLOB column using ODBC input parameters

    Hi all,
    I'm having problem with INSERT into the CLOB column via bound input parameters.
    After calling SQLExecDirect() I'm getting following error:
    [Oracle][ODBC][Ora]ORA-22275: invalid LOB locator specified
    Adding defaults to the table definitions does not help. If I embed parameter values into the SQL statement - everything works just fine.
    I use Oracle 9.2 with latest Oracle ODBC driver 9.2.0.4 under Windows XP.
    Any ideas appreciated...
    Vlad
    Code looks like this:
    SQLBindParameter(hstmt,1,...);
    SQLBindParameter(hstmt,2,...);
    SQLBindParameter(hstmt,3,...);
    SQLExecDirect(hstmt,...);
    SQL statement looks like this:
    insert into tst_table (id,str_fld,clob_fld1,clob_fld2) values (50, ? , ? , ?)
    Table looks like this:
    CREATE TABLE tst_table (
         id          number (10,0)     NOT NULL ,
         str_fld          nvarchar2 (50)     NOT NULL ,
         clob_fld1     nclob          NOT NULL ,
         clob_fld2     nclob          NOT NULL ,
         CONSTRAINT PK_tst_table PRIMARY KEY
              id
    I tried to add defaults to the table, but result is the same:
    CREATE TABLE tst_table (
         id          number (10,0)               NOT NULL ,
         str_fld          nvarchar2 (50)               NOT NULL ,
         clob_fld1     nclob     default EMPTY_CLOB()     NOT NULL ,
         clob_fld2     nclob     default EMPTY_CLOB()     NOT NULL ,
         CONSTRAINT PK_tst_table PRIMARY KEY
              id

    You need to provide the data at execution time (i.e. SQL_LEN_DATA_AT_EXEC(0) in the SQLBindParameter followed by a series of SQLPutData calls). If you go to Metalink
    Top Tech Docs | Oracle ODBC Driver | Scripts & Sample Code
    has some sample code that shows you how to do this.
    Justin

  • Error Handling on procedure based forms

    Hi all,
    I have seen examples of error handling on table based forms like
    the following:
    begin
    doInsert;
    exception
    when others then
    --redirect to some error page
    I have tried the same with a procedure based form by wrapping
    the doSubmit procedure, but when the procedure returns an
    exception, it doesn't execute my exception handling code.
    Any ideas on why this is happening or at least how I can catch
    these exceptions with my own exception handler?
    Thanks,
    Curt

    Chetan, Antonio,
    I opened a TAR on this issue with Oravle and they got the same
    results. Thay suggested a work around of creating an error table
    that gets written to and then dispaly and new page to retrieve
    the error from the table.
    What I ended up doing is creating a dummy procedure that does
    nothing (NULL). The form based on the dummy procedure allows me
    to get the values I need from the user.
    The procedure always returns succesful since it doesn't do
    anything. So in the form success code area I call the real
    procedure, check the return value, and now I can redirect back
    to the orignal form on error, or direct to another paqe on
    success.
    Not the most elegant solution, but it is working for now.
    Curt

  • Procedure Based Forms( a little !)

    Freinds!
    I have mada a form based on a package:
    ======================================
    Create or Replace Package vchrpro AS
    TYPE glrec is RECORD (company_code varchar2(4),
    voucher_type varchar2(4),
    voucher_seq varchar2(6),
    user_code varchar2(8)
    TYPE glcur is REF CURSOR RETURN glrec;
    PROCEDURE glquery(resultset IN OUT glcur,
    v_company_code in varchar2, v_voucher_type in varchar2);
    END vchrpro;
    show errors;
    Create or Replace Package Body vchrpro AS
    PROCEDURE glquery(resultset IN OUT glcur,
    v_company_code in varchar2, v_voucher_type in varchar2) IS
    BEGIN
    OPEN resultset FOR
    SELECT a.company_code, a.voucher_type, a.voucher_seq, a.user_code
    FROM gl_voucher a,gl_voucher_type b
    WHERE a.company_code=b.company_code and
    a.voucher_type=b.voucher_type and
    a.user_code=b.user_code and
    a.company_code=v_company_code and
    a.voucher_type=v_voucher_type
    ORDER BY a.voucher_type;
    CLOSE resultset;
    END glquery;
    END vchrpro;
    show errors
    ========================================
    the package is succesfully created and also
    the form.But the prob. is that i am not sure
    about the "Query Data Source Arguments" of
    a form's block property. i.e what i will
    give "Type Name" and "Value" to my procedure's parameter "resultset" (i have given nothing)AND when i run the form and
    execute the query error says:
    FRM-40505 Oracle error: unable to perform
    query.
    Kindly help me it is very important & urgent!
    also let me know if i have conveyed properly.
    Many thaks!
    null

    Take a look at
    "Forms and Reports Feature/Benefit Demos"
    that you can also get from: http://technet.oracle.com/sample_code/products/forms/content.html
    There is a sample of a procedure based form there.

  • Inserting to a CLOB field in Oracle 8i  Database

    Hi All,
    I am trying to insert a value to a CLOB field in Oracle 8i DB.
    The value gets inserted when the size is less (Up to around 80 Bytes).
    When the size becomes larger the insertion does not take place but no exception is thrown.
    Please see below the code I have written.
    PreparedStatement preparedStatement = null;
              try {
                   connection = getConnection(MMAKeys.WMDS_DATASOURCE);
                   String query = "UPDATE s_mmhp_batch SET MMHP_REPORT_CLOB=(?) WHERE MMHP_BATCH_ID=(?) AND MMHP_USER_ID=(?) AND MMHP_MEMBER_KEY=(?)";
              preparedStatement=connection.prepareStatement(query);
              Reader r = new StringReader(clobReport);
              preparedStatement.setCharacterStream(1, r, clobReport.length());
              oracle.sql.CLOB newClob = oracle.sql.CLOB.createTemporary(connection , false, oracle.sql.CLOB.DURATION_CALL);
              newClob.putString(1,clobReport);
              preparedStatement.setClob(1,newClob);
              preparedStatement.setInt(2,batchId);
              preparedStatement.setString(3,userId);
              preparedStatement.setString(4,memberKey);
              preparedStatement.executeUpdate();
              System.out.println("inside the write to Batch method after executing the query");
              } catch (SQLException exception) {
                   throw new DAOException(
                        "MREDMMSDAO -> writeToTable():SQLException"
                             + exception.getMessage());
              } catch (Exception exception) {
                   throw new DAOException(
                        "MREDMMSDAO -> writeToTable():Exception"
                             + exception.getMessage());
              } finally {
                   closeStatement(preparedStatement);
                   closeConnection(connection);
    I came to know that this method is not supported in Oracle 8i.
    I tried to create an empty CLOB and call the putValue() method.
    But Then, I got an exception stating that the method is not supported.
    Is there any other way to insert a CLOB value to Oracle 8i?
    Please help.
    Thanks in advance,
    Neelambary

    And cursor.callproc('insert_clob_proc', (clob,))
    doesn't work for you?
    PrzemekYes - I should have been more clear in my original post. The callproc function works until we have a value which is over 32K. At values over 32K, we get an error message "ORA-01460: unimplemented or unreasonable conversion requested". I believe this is because we are sending the value as a string and so we would need to figure out how to send as a CLOB in cx_Oracle? Here is some code to use to test if interested...
    Oracle (Oracle Database 10g Release 10.1.0.4.0 - Production):
    CREATE TABLE clob_test (CLOB_FIELD CLOB);
    CREATE OR REPLACE PROCEDURE ins_clob_test (v_clob_field IN CLOB)
    AS
    BEGIN
    INSERT INTO clob_test (clob_field) VALUES (v_clob_field);
    END ins_clob_test;
    Python (2.5):
    conn = cx_Oracle.connect(xhash['oraclelogin'])
    cursor = conn.cursor()
    clob_var = 'Some test data' * 10000
    cursor.callproc('ins_clob_test',(clob_var,))
    conn.commit()
    cursor.close()
    conn.close()
    I should also mention that I am the Oracle developer and not the Python programmer - my knowledge of Python is very limited. I would like the Python programmers to use the procedures (packages) I have created to do their inserts but this situation has caused them to put the SQL directly in their code.
    Thanks again for any assistance you can provide.
    Jason

  • Loading multiple text files from a folder into oracle clob field

    I would like to load about 300 word documents into a oracle clob field with each document inserted as a separate record.
    I'm not quite sure how to go about doing this. Is there a utility in oracle that would do this?
    I've looked at sql loader and utl_file but both require the name of the file. Is there a way I can do this?
    If its not possible using just oracle, does anyone know how I can do this in combination with perl?
    Many Thanks
    Sam

    I have no experience with this, but pl see if MOS Doc 73787.1 (How to Read A Binary File into BLOB Using PL/SQL) can help.
    Essentially, you will have to write code to loop thru all 300 files to load them into the database
    HTH
    Srini

  • Manipulation of the size of an image inserted into an Image Field

    Hi,
    I'm learning LiveCycle Designer ES 8.2 as I go. My apologies for the lengthy post but I'm trying to give you as much background as possible.
    I'm are trying to design a form that will allow us to automate data entry (by importing fields into our Access dbase instead doing the data entry by hand).  However, at the end of the day, I also need an electronic pdf file of the same form and a printed paper copy.  Things have been going well until working with the Image Field.
    The form is fairly complicated - 4 pages long.  We're collecting extensive data on specific locales (location, what was seen there, who did the work, etc). On one page, three different images (maps) are needed, each one showing different details on the site's location.  [Please note these images will not be imported into the database but must appear in the electronic pdf and on the paper copy.] The people who fill out the forms are expected to do so using Adobe Reader (the form will have extended rights so that they can save the data they enter on the form).  They would then email us the form as an xml file.  Once we receive the form, we have to add some additional information and then the finalized paper copy and electronic pdf would be made.  We have already done this successfully with much simpler forms, none of which have needed Image fields.
    Here's my problem - one of the three maps required is a standard 1:50000 scale topographic map which shows things like contour lines and latitude/longitude lines.   For accuracy and comparison reasons, having the standard 1:50000 scale is very important to us, so we can make absolutely certain the submitter has the right location.  If the dot plotted on the map is out just a few millimeters, we're looking at an error that represents 100s of meters on the ground.
    The current form exists in Word - we have never had any rules about the image formats used (jpg, gif, etc) or the resolution, as long as the image was clear.  The only rule was that the scale of the topographical map image HAD to be at 1:50000 scale.  This gets very tricky because Word will automatically mess with the physical appearance of the image, based on its resolution.  In most cases, the submitter simply readjusted the image within Word, stretching/resizing it manually until the scale was correct.  Another option was to use an image in the emf file format so that Word didn't readjust the image's appearance based on its resolution. Whatever method they used was fine by us, as long as the scale was correct.
    So far, after playing with all the "sizing" options of the Image field, along with embedding or not embedding the file, I do not see any way to control the physical size of the image. On our form, the three image fields are different sizes, with 2 of them being small (~2x3 inches) and the 3rd being large (~7x7 inches). Regardless of the settings I chose for each image field, the program simply resizes the topographic map whatever Image field it was inserted into,  making the same image appear physically smaller or larger at will.  I cannot correct the scale by resizing it, like I can in Word.   Instead, when I try to select the image, all I am asked is if I wish to insert another image.  Inserting an .emf file format into the field doesn't work - it only shows a blank screen instead of the image.
    Is there a way for the user to adjust the image's physical size in the form, after inserting it (like they can do in Word)?  Demanding that everyone use a standardized resolution or image format also seems highly unlikely to work - there are too many submitters and too many programs that can be used to make the image (some are making them using GIS programs, others are scanning the bought topographic print).  I'd appreciate any help you can give me on this.  I have had very little luck tracking down discussions on Image fields and how they work best within LiveCycle.  Any comments would be helpful!

    Hi,
    I have an example here that is intended to demonstrate the difference between Positioned and Flowed subforms: http://assure.ly/i8pSdy.
    This shows how you can use a slider to change the dimensions of the image object.
    I have extended this to an example with buttons to scale the image: http://assure.ly/i8ZI5Y
    This may not be fine enough for your purposes, but it may give you some ideas.
    Good luck,
    Niall
    Assure Dynamics

  • How to Inserting into Auto Number Field

    HI
    I have a table in mysql in which one field is autonumber.i want to insert record in that table but i want to off Autonumber property so that i can enter value of my own choice in to autonumber field and then on autonumber property.
    as we use Identity_INSERT ON in SQLSERVER
    Thanks

    I am Using Statement not Prepared Statement and i dont want to insert null into to it ,
    my Sceneiro is
    i have table A in Db 1 and Table B in DB 2 with same structure like first column autonumber.
    i have data in Table A and i want ot move as it is data to Table 2 in DB2 on same server . i dont want to break the existing sequence of records
    Bye

  • How to insert into two tables using a Single ADF creation form?

    Hi,
    I need to make a ADF Creation Form that will insert the data at same time in two tables... Like i have two tables Track (Track_id,Track_Name)
    and Module ( Module_id, Track_id, Module_name, Module_Short_name) and i have to insert the data in both the tables using Same Creation Form.
    can anybody help me out and gave me the solution,how to do that?
    Thanks

    if you want to insert different data into two different tables then you can drag the two data objects into creation form..
    If you want to duplicate the data inserted in the one table to another then you can follow two approach
    1. Drag and drop one table, When Save button is invoked then insert data into another table using callable statement.
    or
    2. Create on-insert trigger in Table1 where you can insert data into table2.
    --Prasanna                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Procedure Based Form with master details Relationships

    Helo All
    Here i m having some problem in making one form which is having 2 tables one is master and other is detail table and i already made relationship between them but still i make both forms at that moment form didn't make the auto relationship.even after taht when at the form level i made the relationship between 2 tables it made but at teh compilation time it gives error.
    Actually one table was there at that time it worked but with relation it creates problem.
    Can anybody give me any idea how to sort out this problem.

    Helo Frankin
    Actualy the error came when i made the master detail relation manualy.but as per me if both tables have relationship with each other then no need to create it manualy isn't it?
    even after that i created teh relation manaualy but at the on clear block details trigger it showed compile time error.
    If possible can u give me any live example for this
    TQ
    Vivek

  • How to make an insert script for CLOB data types?

    I need to have an insert script for Oracle 11g where I insert large texts into a CLOB field
    I exported data from a source table using TOAD's export dataset and the insert statements option, so it generates a script of just simple insert into statements with the clob strings in the values clause within single quotes.
    While most of the inserts succeed, several fail with the error: string literal too long
    How can I insert long texts into clobs?
    One workaround I was considering, is maybe breaking up those inserts which are too big, so that it inserts a chunk, and then does an update to append additional chunks? not sure if that would work either
    first wanted to get any ideas from the oracle experts here in case there is a much easier, non-manual labor intensive way.

    Thank you for that informative link, Raj
    I wouldn't be able to use SQL Loader for this though, this is something that gets submitted to a DBA in a request and it must be in a script that can be run in Sql Plus, and it cannot pull it from a table or file.

  • How to dump the complete MainDocument to a CLOB field?

    Hi all,
    is it possible to dump the complete MainDocument to a CLOB field?
    That is, starting from <?xml version=1.0> to the last closing tag?
    I have thought of two possibilities here, but I am unsure how I can actually implement them:
    1. Use a JDBC receiver to make an "INSERT INTO myTable myCLOB <MainDocument>".
    2. Tell the message mapping to simply dump the whole source message that was passed to the Integration Engine into this CLOB field.
    I am currently favoring option 2, but I have no idea yet how you can access the source message from inside the message mapping. I guess there is a system object that holds it... can you help me there?
    Thanks and cheers!
    Stefan

    Stefan
    1 . Receiver JDBC adapter expects data for the INSERT to be of a particular format.
    <root>
      <StatementName>
    <dbTableName action= “INSERT”>
        <table>realDbTableName</table>
    <access>
    <col1>xml payload from Source</col1>
    </access>
    </dbTableName>
    </StatementName>
    </root>
    Write a java or XSL mapping that will create an output of this format where the entire XML paykload is copied between COL1 . You will have to rename the fieldnames according to your table strcuture.
    Regards
    Bhavesh

  • Inserting into a table which is created "on the fly" from a trigger

    Hello all,
    I am trying to insert into a table from a trigger in Oracle form. The table name however, is inputted by the user in am item form.
    here is what the insert looks like:
    insert into :table_name
    values (:value1, :value2);
    the problem is that forms does not recognize ::table_name. If I replace :table_name with an actual database table, it works fine. However, I need to insert to a table_name based from oracle form item.
    By the way, the table|_name is built on the fly using a procedure before I try to insert into it.
    Any suggestion on how can I do that? My code in the trigger is:
    declare
    dm_drop_tbl(:table_name,'table) // a call to an external procedure to drop the table
    dm_create_tbl(:table_name,'att1','att2');
    insert into :table_name
    values (:value1, :value2);
    this give me an error:
    encounter "" when the symbol expecting one.....

    Hi ,
    You should use the FORMS_DDL built_in procedure. Read the on-line documentation of forms ...
    Simon

Maybe you are looking for

  • How to remove old iWeb pages off internet which are no longer in iWeb program?

    This is my current looking website - www.pholife.co.uk which goes to - 'www.pholife.co.uk/pholife/Start.html' when googling 'pholife tom bird' an older website under the same domain name appears in the search list before the pholife/start.html page T

  • Transfer Iphone from one macBook to Another

    I recently purchased a new mac book and migrated my apps and data from my old mac book. I am trying to sync my Iphone 3 to the new mac book and itunes does not recognize my phone. How do I un-tether the Iphone from my old computer so I can connect it

  • How to pass a complex type as input for a Java class in Oracle 11g?

    Hi All, This is my Parent Class.. package ADFapplnPackage.model; public class ParentClass { String Name; int age; public ParentClass() { super(); This is my ChildClass : package ADFapplnPackage.model; public class ChildClass { public ChildClass() { s

  • Data Load from ECC6 in GC or LC

    Hi Friends, Have a small query. When i extract data from ECC6. Should i take the data in GC (Group currency) or in LC (Local Currency). If i do the extract in local currency how does the system handle the currency conversion from Local currency to Gr

  • Gigaworks T40...where to find?.

    Hi all. I'm the proud owner of some Gigaworks T20 speakers (very impressive!) I noticed that on the Creative site, they have a Gigawork T40 ad on the homepage. After hunting around for an hour, i cannot find them for sale anywhere.... I assume that t