Updating CLOB in table

Hi,<br><br>
I am currently cleaning up my Oracle Database (Oracle 10g XE) filled with approximately 3000 articles. In the body of these articles some HTML-code such as img - tags etc. is placed.<br>
I wrote a little script to clean this up. But when I try to update my table nothing happens (value of CLOB stays the same, and I get no errors while using error_reporting(E_ALL)).<br><br>
Anyone got an idea? My code:<br><br>
<?<br>
/* this code is placed within while-loop, going through all articles */<br><br>
if(eregi("(<img[^>]*>)", $ARTIKEL_BODY) OR eregi("(<IMG[^>]*>)", $ARTIKEL_BODY))<br>
{<br><br>
echo "Artikel " . $i . " has got an img tag.";<br><br>                                        
$ARTIKEL_BODY = eregi_replace("(<img[^>]*>)", "", $ARTIKEL_BODY);<br><br>
$ARTIKEL_BODY = eregi_replace("(<IMG[^>]*>)", "", $ARTIKEL_BODY);<br><br>     
$query_update =      "UPDATE TBLARTIKELS<br>
          SET ARTIKEL_BODY = EMPTY_CLOB()     <br>               WHERE ARTIKEL_ID = " . $row['ARTIKEL_ID'] . "<br><br>
RETURNING ARTIKEL_BODY INTO :ARTIKEL_BODY";<br><br>
$stid2 = oci_parse($conn, $query_update);<br><br>
$clob = oci_new_descriptor($conn, OCI_D_LOB);<br><br>
ocibindbyname($stid2, ":ARTIKEL_BODY", $clob, -1, OCI_B_CLOB);<br><br>
oci_execute($stid2, OCI_DEFAULT);     <br><br>                                             
if($clob->save($ARTIKEL_BODY))<br>
{<br><br>
echo "Artikel " . $i . " changed.";<br><br>
echo $ARTIKEL_BODY;<br><br>
}<br>
else<br>
{<br><br>
echo "Something is wrong at article " . $i;<br><br>
}<br><br>
$clob->free();     <br><br>                    
?>

1. Why are you doing a test for img and IMG when using eregi, which is case insensitive; one or the other will suffice with no need for the OR.
2. Are you running the block of code correctly, i.e. is
"echo "Artikel " . $i . " has got an img tag.";"
printing output?
3. Are you assigning $ARTIKEL_BODY correctly before the block? Further down you use $row['ARTIKEL_ID'], so I assume before the block you have assigned $row['ARTIKEL_BODY'] to $ARTIKEL_BODY.
4. You are using oci_execute($stid2, OCI_DEFAULT); (which is not auto-commit) but I cannot see an expressed oci_commit() in that code, I assume this is done further down in some unposted code?
Need to see all of the code to get a better idea. Often problems occur in the silliest of places...

Similar Messages

  • Problem updating CLOBs across multiple schemas

    I am having a problem trying to update CLOB data in a schema owned by a user other than the logged-in user.
    Suppose I have user UA who owns table TA and user UB who owns table TB, and TA and TB contain CLOB columns. TA owns a package PA and TB owns package PB; these packages provide functions for updating the CLOB data via LOB locators.
    I have a JDBC connection logged on as user UA, and I can successfully call package PA to update the CLOB data in TA from my Java app. However, I cannot use this connection to similarly call package PB to update the CLOB data in TB - the app successfully calls CallableStatement.executeUpdate() but then I try to get the output stream of the returned CLOB:
    oracle.sql.CLOB oOraClob = (oracle.sql.CLOB)oCall.getClob(SQLPAR_CLOBCOL);
    Writer oOut = oOraClob.getCharacterOutputStream();
    and I get the following exception on the getCharacterOutputStream() call:
    java.sql.SQLException: ORA-01031: insufficient privileges ORA-06512: at "SYS.DBMS_LOB", line 498 ORA-06512: at line 1
    This is despite user UA having execute privilege on PB and update on table TB.
    I only get this problem when I try to update the CLOB directly from JDBC - I have another function in package PA which copies CLOB data directly from TA to TB and that works without any problem. Given this, I tried writing a procedure in PA to act as a kind of proxy between PB's CLOB-update function and user UA, i.e. UA calls a proc in PA which in turn calls PB which returns a LOB locator to PA, which in turn returns the LOB locator to user UA, but this still gave the same error.
    Does anyone know what might be causing the problem? Is there some user permission I'm missing?
    I don't want to have to use a separate DB connection as user UB just to update the CLOB. The only other solution I can see at present is to pass the string data to PA as a LONG and have PA copy the data to the LOB locator returned by PB. How could I achieve this? Is there a built-in function which enables a LONG to be copied to a CLOB?
    Any help would be very much appreciated. Thanks.
    Al.
    null

    Ian - You can use a different schema for each application while keeping the applications in a common workspace. This would allow users to authenticate once and for the applications to share the same authenticated session. In doing this, however, a user has to be given links from one application to another, e.g., from a menu page, in order for the "session continuity" to remain unbroken (a requirement to prevent another login challenge). But since these may be unrelated applications that have no need to access one anothers' session state, it might be better to use Single Sign-On. With this method there is only one login required and a user can access each application which will maintain its own private session.
    Scott

  • Jython error while updating a oracle table based on file count

    Hi,
    i have jython procedure for counting counting records in a flat file
    Here is the code(took from odiexperts) modified and am getting errors, somebody take a look and let me know what is the sql exception in this code
    COMMAND on target: Jython
    Command on source : Oracle --and specified the logical schema
    Without connecting to the database using the jdbc connection i can see the output successfully, but i want to update the oracle table with count. any help is greatly appreciated
    ---------------------------------Error-----------------------------
    org.apache.bsf.BSFException: exception from Jython:
    Traceback (innermost last):
    File "<string>", line 45, in ?
    java.sql.SQLException: ORA-00936: missing expression
    ---------------------------------------Code--------------------------------------------------
    import java.sql.Connection
    import java.sql.Statement
    import java.sql.DriverManager
    import java.sql.ResultSet
    import java.sql.ResultSetMetaData
    import os
    import string
    import java.sql as sql
    import java.lang as lang
    import re
    filesrc = open('c:\mm\xyz.csv','r')
    first=filesrc.readline()
    lines = 0
    while first:
    #get the no of lines in the file
    lines += 1
    first=filesrc.readline()
    #print lines
    ## THE ABOVE PART OF THE PROGRAM IS TO COUNT THE NUMBER OF LINES
    ## AND STORE IT INTO THE VARIABLE `LINES `
    def intWithCommas(x):
    if type(x) not in [type(0), type(0L)]:
    raise TypeError("Parameter must be an integer.")
    if x < 0:
    return '-' + intWithCommas(-x)
    result = ''
    while x >= 1000:
    x, r = divmod(x, 1000)
    result = ",%03d%s" % (r, result)
    return "%d%s" % (x, result)
    ## THE ABOVE PROGRAM IS TO DISPLAY THE NUMBERS
    sourceConnection = odiRef.getJDBCConnection("SRC")
    sqlstring = sourceConnection.createStatement()
    sqlstmt="update tab1 set tot_coll_amt = to_number( "#lines ") where load_audit_key=418507"
    sqlstring.executeQuery(sqlstmt)
    sourceConnection.close()
    s0=' \n\nThe Number of Lines in the File are ->> '
    s1=str(intWithCommas(lines))
    s2=' \n\nand the First Line of the File is ->> '
    filesrc.seek(0)
    s3=str(filesrc.readline())
    final=s0 + s1 + s2 + s3
    filesrc.close()
    raise final

    i changed as you adviced ankit
    am getting the following error now
    org.apache.bsf.BSFException: exception from Jython:
    Traceback (innermost last):
    File "<string>", line 37, in ?
    java.sql.SQLException: ORA-00911: invalid character
    here is the modified code
    sourceConnection = odiRef.getJDBCConnection("SRC")
    sqlstring = sourceConnection.createStatement()
    sqlstmt="update tab1 set tot_coll_amt = to_number('#lines') where load_audit_key=418507;"
    result=sqlstring.executeUpdate(sqlstmt)
    sourceConnection.close()
    Any ideas
    Edited by: Sunny on Dec 3, 2010 1:04 PM

  • How to find out list of clob/blob tables in a schema

    Hi,
    I have tricky situation...i have 119 tables out of which 11 tables are clob/blob tables...is there any view where i can find out list of tables are clob/blob tables? (at schema level view means user_<>)
    -- Raman.

    USER_TAB_COLS includes the data type, column name, and table name for each column in each table in the system. You could query that looking for columns with a DATA_TYPE of CLOB or BLOB. If some tables have multiple LOB columns and you want them to appear only once, you'd have to throw a DISTINCT on the table name.
    Justin

  • The currency is not getting updated in the table VBAP

    Hi ,
    The currency is not getting updated in the table VBAP. The currency was suppossed to be copied from the header table VBAK for a Sales Order. When the user creating a Sales Order the currency WAERK is not shown in VBAP table. VBAK-WAERk is in EUR . Does anyone know why is this happenning?
    Currency is maintained in the Customer Master, Material Master and Sales Org. Any suggestions?.
    Also it is happened for only one line item in a set of line items , Other line items did display the currency field.
    The net Value has data in it .
    The system is ECC 5.0
    Regards,
    Senthil

    Dear Senthil,
    Please apply the following notes (if they apply to your support pack level) and retest:
    1460621 VBAP-WAERK is deleted after the sold-to party is changed
    1426441 VBAP-WAERK deleted for subitems
    1493998 VBAP-WAERK deleted for subitems
    This should resolve the issue. I hope this helps.
    Best regards,
    Ian Kehoe

  • Data is not getting updated in DB table

    hi all
    i am doing IDOC to jdbc scenario
    i am triggering idoc from R/3 and the data is going into DB table
    sender side:       ZVendorIdoc
    receiver side:
    DT_testVendor
      Table
        tblVendor
          action       UPDATE_INSERT
          access      1:unbounded
            cVendorName 1
            cVendorCode 1
         fromdate    1
         todate      1
          Key
            cVendorName  1
    if i trigger idoc for example vendor 2005,2006 and 2010 data is getting updated in the table
    but again if i trigger idoc for same vendor nos data does not get updated in DB table while message is successfull in moni and RWB both
    plz suggest if any change need to be done to update the data
    Regards
    sandeep sharma

    Hi Ravi
    you are right, vendor no is my key field . problem is when i send data again then it should Update the data but it's not updating the data again
    i did on exp with this : i deleted all the record from the table and then  triggered idoc for vendor 2005 , 2006,2010 after this data is updated in the table i deleted the rows for vendor no 2006 and 2010 and kept the row for vendor 2005
    then i again trigered the idoc for vendor no 2005,2006 and 2010 now this should update and it should insert rows for vendor no 2006 and 2010 but i am surprised its not updating the data
    Thanks
    sandeep

  • TDS amount not getting updated in the table under the field QBSHB

    Dear Friends,
    The TDS amount entered while booking the vendor invoices through MIRO T-cde, is not getting updated in the table BSEG under the field QBSHB. 
    Kindly let me know the reason for the same and guide me to correct it
    TIA.
    Regards,
    Vincent

    HI Vincent,
    Bseg-QBSHB field is relavent for classic WT.
    I hope you are using the EWT.
    Hence if you post a document through MIRO it will not update
    (but if you post document FB60 it will update but wrongly).
    Reason is Miro document is posted through interface.
    Hence SAP is suggested to not refer the Bseg-QBSHB and etc., fields.
    refer only with_item table.
    Please refer the below replay from SAP
       Please refer the below note .363309
    Please review attached note 363309 for detailed explanation
    BSEG-QBSHB is designed to fill for the classic withholding tax. And
    extended withholding tax information is stored exclusive in table
    WITH_ITEM.
    You can check in table BSEG for the fields and will find that system
    do NOT update field BSEG-QBSHB.
    In your line layout,you define a field BSEG-QBSHB. But actully the field
    of vendor/customer line item is filled with zero from FI. Thus,it shows
    zero in line item display.
    And as note 363309 says,
    "Remove the field which contains the withholding tax information
    from your display variant.
    If you want to display the withholding tax information, double-click on
    the document number and subsequently choose 'Withholding tax' button."
    (BSEG-QSSKZ, BSEG-QSSHB, BSEG-QBSHB) field is not relavent for
    Extended withholding tax and not suppose to use in report FBL1N.
    It basically does not make any sense to use the withholding tax fields
    of the document line items (BSEG-QSSKZ, BSEG-QSSHB, BSEG-QBSHB) with the
    activated extended withholding tax.
    regards
    Madhu M
    Edited by: M Madhu on Jan 31, 2011 1:19 PM

  • Can't update a sql-table with a space

    Hello,
    In a transaktion I'm getting some Values from a SAP-ERP System via JCO.
    I update a sql-table with this values with a sql-query command.
    But sometimes the values I get from SAP-ERP are empty (space) and I'm not able to update the sql-table because of a null-value exception. (The column doesn't allow null-values). It seems that MII thinks null and space are the same.
    I tried to something like this when passing the value to the sql-query parameter but it didn't work:
    stringif( Repeater_Result.Output{/item/SCHGT} == "X", "X", " ")
    stringif( Repeater_Result.Output{/item/SCHGT} == "X", "X", " ")
    this works but I don't want to have a "_"
    stringif( Repeater_Result.Output{/item/SCHGT} == "X", "X", "_")
    Any suggestions?
    thank you.
    Matthias

    The problem is Oracle doesn't know the space function. But it knows a similar function: NVL --> replaces a null value with something else. So this statement works fine for me:
    update marc set
    LGort = '[Param.3]',
    dispo = '[Param.4]',
    schgt = NVL('[Param.5]', ' '),
    dismm = '[Param.6]',
    sobsl = NVL('[Param.7]',' '),
    fevor = '[Param.8]'
    where matnr = '[Param.1]' and werks = '[Param.2]'
    If Param.5 or Param.7 is null Oracle replaces it with a space in every other case it is the parameter itself.
    Christian, thank you for your hint with the space function. So I remembered the NVL-function.
    Regards
    Matthias

  • Update or delete table from XML

    Is it possible to update or delete table's row from XML file?
    Thanks
    Prasanta De

    Hi Steve,
    Thanks for your reply but I could not find any example from the documentation for update-request or delete-request. I need your help in this regards.
    1. I have emp table with many rows and the simple structure like this
    DEPTNO NUMBER(2)
    EMPNO NUMBER(2)
    EMPNAME VARCHAR2(20)
    EMPSAL NUMBER(8,2)
    Key is defined on deptno and empno
    2. I have a xml file like this
    <?xml version = '1.0'?>
    <ROWSET>
    <ROW num="1">
    <DEPTNO>1</DEPTNO>
    <EMPNO>11</EMPNO>
    <EMPSAL>1111.11</EMPSAL>
    </ROW>
    <ROW num="2">
    <DEPTNO>1</DEPTNO>
    <EMPNO>12</EMPNO>
    <EMPSAL>2222.22</EMPSAL>
    </ROW>
    <ROW num="3">
    <DEPTNO>1</DEPTNO>
    <EMPNO>13</EMPNO>
    <EMPSAL>3333.33</EMPSAL>
    </ROW>
    </ROWSET>
    3. I want that xsql servlet will read this xml file and update EMPSAL column depending upon the value of DEPTNO and EMPNO from xml file.
    Please let me know how I should use update-request in xsql page.
    Thanks
    Prasanta De
    null

  • Automatic payment program (F110) document are not update in PAYR table

    Hi all,
    I have make payment in F110 (automatic payment) to customer 
    But it is not update in PAYR table
    Please guide me what I have to do for documents update in PAYR table
    Thanks and Regards,
    Prudhvi

    Hi,
    It is possible to enter multiple documents.
    You can enter a list of single documents or in intervals.
    Enter the document number in ascending order.
    Ex:
    Individual documents.
    10001,10003,10011
    If the documents are in a sequence you can enter the Interval like this
    (10001,10011)
    Hope it helps you
    Regards
    Andrew
    Edited by: Andrew J on May 28, 2009 4:26 PM

  • How does CLOSED_CODE updated in PO_LINES_ARCHIVE_ALL table

    Hi,
      How does CLOSED_CODE column will be updated in PO_LINES_ARCHIVE_ALL table. We have setup "Archive On Approve" for archiving.
      Does below is a valid check to verify the line count between lines table and archive table?
      We are comparing the line count in Lines table and Archive table, and if there is difference in count, then it is assumed to be change in the Lines,
      so then direct the PO Approval Worfkflow for re-approval.
      Kindly suggest if below check is correct or not, especially check on CLOSED_CODE='OPEN'.
      In few cases, the lines in PO_LINES_ALL table has CLOSED_CODE = 'CLOSED' but, PO_LINES_ARCHIVE_ALL table has lines with CLOSED_CODE = 'OPEN' even after PO approval.
      Is this expected behavior? When Does CLOSED_CODE will get updated in archive table?
    SELECT COUNT(*)
             INTO x_lines_count
             FROM po_lines_all
            WHERE closed_code = 'OPEN'
              AND po_header_id = x_po_header_id;
           SELECT COUNT(*)
             INTO x_ar_line_count
             from po_lines_archive_all
          where closed_code = 'OPEN'
            and latest_external_flag = 'Y'
            and po_header_id = x_po_header_id;
    IF x_lines_count <> x_ar_line_count THEN
         RESULT: "Change in PO Lines";
    Regards,
    Ram

    Sathyaseelan wrote:
    Hi All,
    After creating requisition from R12 iProcurement , the column document_type_code in the table PO_REQUISITION_LINES_ALL got updated as BLANKET or CONTRACT.
    Need to know how these values was defaulting in the requisition.
    I am able to see the values soon after added the item to shopping cart.
    Regards,
    SathyaI think whatever the item is in the requistion..It should be associated with the blanket or contract agreement..that the reason why you are seeing that document type code
    HTH
    Mahendra

  • Field TSABR is not getting updated in MHIS table.

    Hi All,
    The field TSABR (Scheduling Status: New Start Called) is not getting updated in MHIS table.
    Please do tell me how it will get updated.
    What is a logic behind it.
    Many Thanks in advance.
    Regards,
    Sanjay Tiwari

    Hi,
    I checked it my system and that field was getting updated ..
    For calls with status "New start called " will get updated in MHIS and for these call you will  only have the field scheduling status :planned date called " as marked . pls check
    regrds
    pushpa

  • Excise Base amount not updated in J_1iexcdtl table -reg

    Dear Gurus,
    We have used SAP Ecc 5.0 Patch level 21. In patch level 20, SAP admit without delivery , can do commercial billing and excise billing in foreground. After batch update SAP not support excise invoice creation in foreground. It support only background. We have 2 senario. 1 is capex sales . ie. without material stock we have raise the comm.billing and excise billing. 2 is supplimentary billing. both the senario now getting effected because of no delivery. Asper SAP advise we have setting for background process excise invoice creation. Excise invoice created. but excise base amount not updated in j_1iexcdtl table. Using J_1I7_USEREXIT_CALC_EXC_BASE user exit we are trying to update the same. For single material it works fine. But more than one material for the first material's base amount is updated in all materials. for your reference i have mentioned the codding . SAP advise it is possible to update excise base amount. But not possible to do. pl.adivse if any correct or guide to solve it.
    FUNCTION J_1I7_USEREXIT_CALC_EXC_BASE.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(EXCITM_BASE) TYPE  KOMV-KAWRT
    *"     VALUE(POSNR) TYPE  VBRP-POSNR
    *"  EXPORTING
    *"     VALUE(EXCITM_BASE) TYPE  KOMV-KAWRT
    *"  TABLES
    *"      KONV STRUCTURE  KONV
    *{   INSERT         RDSK925285                                        1
    TABLES : KONV.
    data :   W_INDEX LIKE SY-TABIX.
    DATA :ITAB LIKE TABLE OF KONV WITH HEADER LINE.
    DATA :ITAB1 LIKE TABLE OF KOmV WITH HEADER LINE.
    ITAB1[] = KONV[].
    DATA : BEGIN OF I_TAB OCCURS 0,
           KAWRT LIKE KONV-KAWRT,
           POSNR LIKE VBRP-POSNR,
           END OF I_TAB.
    LOOP AT ITAB1.
    READ TABLE ITAB1 WITH KEY KSCHL = 'JMOD' KPOSN = ITAB1-KPOSN.
    IF SY-SUBRC EQ 0.
        EXCITM_BASE = ITAB1-KAWRT.
        POSNR = ITAB1-KPOSN.
    ENDIF.
    ENDLOOP.
    *}   INSERT
    ENDFUNCTION.
    Thanks & Regards
    R.Udayakumar

    solved with the same user exit

  • Error in updating the source table in mapping

    Hi All,
    I have a mapping in which I am fetching records from a table A, performing some expression logic and then using a Splitter operator to update my target table Bas well as update one of the columns of my source table A(to indicate that record has been processed). When I execute the mapping, updation of target table B works, but updting my source table A does nt work and the job completes succesfully?
    Can somebody please help me to debug this?
    Thanks

    Hi,
    Please check the splitter condition for the two groups that you have set. This might be a case where you have put such a condition in splitter that all the record sets are going to the target table and none are going to the source table. Therefore the source table is not getting updated by any record.
    Regards
    -AP

  • Regardig error while updating the database table

    hi experts,
       i m trying to update the database table from the values containig in my internal table  ,,,but the system is giving this error plz help me::::
    The type of the database table and work area (or internal table)
    "ITAB_UPDATE" are not Unicode convertible. Unicode convertible.          
    my internal table name itab_update and the database table name yitab.i m using this statement::
        modify yitab from itab_update.

    Hi
    1. You  have to Declare the Itab with the same structure as DB table.
    2. Use the statement
        Modify <DBtable> from TABLE <itab>.
    or
       Update <DBtable> from TABLE <itab>.
    Hope this will solve.
    Reward .....if so.
    Regards.

Maybe you are looking for

  • Ago function not working properly with time dimension

    Hi all, In OBIEE 11g we have the following issue: We have a fact which contains transaction's sum for the last day of each month. We use ago function like this : ago(<fact.column>,1)When we want to see the result from the time hierarchy the fact with

  • Set 'Use Job server default' for Unmanaged disk destination

    Hi, I am using BO XI R2 SDK to schedule reports. I want to set all my reports destinations to Unmanaged disk to a particular folder. I have set these in reportjobserver's destination configuration too. Now i want create schedules through code for all

  • Execution of binary files/scripts fails

    hi there, I spend hours seeking for a solution to my problem... or at least a cause for its occurrence :| I wanted to set up a policy enabling remote management on certain clients. Therefore I have to enable XDMCP. Novell was that kind and supplied a

  • Inbox vs. Gmail 5.0: Which one is the right fit for you?

                                        Inbox vs. Gmail 5.0: Which one is right for you? | PCWorld

  • Scheduling work from interrupt context?

    Hi all - I have a block driver which sits above the normal block drivers, and passes requests to them. The issue is as follows: In a driver, I maintain a queue of buffers and then set up the biodone() callback to process this queue. The issue I'm see