Handling SQL-Queries asynchron with libevent and libclntsh

Hy everyone;
My company has wrapped functionality around libclntsh with pro*C.
Currently all operations on the database are blocking the connector component, which in term produces the need for processes / threads, which is a thread on scalability.
Is there a way do do asyncIO/event driven programming like nginx or lighty do with something like libevent or libev?
If this is not the right place to ask this question, where should I go?
TIA,
Wilfried Goesgens

Hy everyone;
My company has wrapped functionality around libclntsh with pro*C.
Currently all operations on the database are blocking the connector component, which in term produces the need for processes / threads, which is a thread on scalability.
Is there a way do do asyncIO/event driven programming like nginx or lighty do with something like libevent or libev?
If this is not the right place to ask this question, where should I go?
TIA,
Wilfried Goesgens

Similar Messages

  • SQL Queries, filter with multiple radio Buttons

    I am trying to figure out how to filter my datagridview with SQL queries so that both of them have to be met for data to show up not just one.
    My datagridview is bound to an Access Database.
    I basically would want it filtered by 'Width' and 'Wood Type'
    I have radio buttons in group boxes so a width and wood can be selected. However only one Query is applied at a time.

    Public Class Form1
    Private Sub StickersBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
    Me.Validate()
    Me.StickersBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.TestDataSet)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'TestDataSet.Stickers' table. You can move, or remove it, as needed.
    Me.StickersTableAdapter.Fill(Me.TestDataSet.Stickers)
    AcceptButton = Button1
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    End Sub
    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
    Try
    Me.StickersTableAdapter.Wood_Oak(Me.TestDataSet.Stickers)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub
    Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
    Try
    Me.StickersTableAdapter.Wood_Walnut(Me.TestDataSet.Stickers)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub
    Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged
    Try
    Me.StickersTableAdapter.Width14(Me.TestDataSet.Stickers)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub
    Private Sub RadioButton4_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton4.CheckedChanged
    Try
    Me.StickersTableAdapter.Width18(Me.TestDataSet.Stickers)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub
    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If RadioButton5.Checked = True Then
    If TextBox1.Text = "" Then
    Else
    Me.StickersBindingSource.Filter = "Width LIKE '" & TextBox1.Text & "%'"
    DataGridView1.Refresh()
    End If
    ElseIf RadioButton6.Checked = True Then
    If TextBox1.Text = "" Then
    Else
    Me.StickersBindingSource.Filter = "[Wood Type] LIKE '" & TextBox1.Text & "%'"
    DataGridView1.Refresh()
    End If
    ElseIf RadioButton5.Checked = False And RadioButton6.Checked = False Then
    MsgBox("Please Select a Search Criteria")
    End If
    End Sub
    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
    Try
    Me.StickersTableAdapter.SearchWood(Me.TestDataSet.Stickers)
    Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
    End Sub
    End Class

  • Database package for handling SQL queries using JDBC/ODBC bridge

    I perform a package using J2ME which can stores the contact.It consisting of the fascilities of the editing,Inserting, Deleting,Updating records
    i have write import statements as
    import javax.microedition.midlet*;
    import javax.microedition.lcdui.*;
    but when i write import java.sql.* error message shown AS this package does not exist.
    So for J2ME using J2ME wireless toolkit 2.5 cldc which package i want to import to implement the sql statements i implement the Database using the text Files.
    Requirement is that all SQL statements are implemented.also Which other equivalent packages are there for handling the databases in J2ME.
    Please tell me all the package & Answer of the above problem.

    Hey
    I was told that I can (through Java code) read all the registered DSNs and that way basically modify my application to populate it with a list of databases in the system and then when the user clicks on a database, the program would function as before...i.e. read the list of tables with it..yadda yadda yadda
    Can anyone guide me on how to do that? read a list of DSNs in the system etc

  • Catching Mysql  sql execution  status with EJB and Persistence API.

    Hi:
    When I insert a duplicate unique Key, the try block defined below does not catch the exception and the transaction is rolled back automatically by Glassfish.
    How is the proper way to handle this to catch the duplicate status?
    public class MyDbEjb extends DefaultHandler implements MyDbEjbRemote {     @PersistenceContext     private EntityManager em;     public void createTag(Tag tag) {       try {         em.persist(tag);       } catch ( Exception e)       {           System.out.println("how sorry");       }           }
    Thank you

    Hi annie,
    Wherever you are handling database transactions,
    you'd not be able to create a Connection if database
    is closed (I think you mentioned turning off the
    database) then at this condition, you should
    certainly throw a System level exception and stop all
    processing with some meaningful flow to indicate a
    failure (like display message on UI). Even
    network problems are handled by exceptions... so I
    don't see a reason why you didn't wrap it in the
    first place.
    Anyway, try handling specific exceptions rather than
    the general Exception... this will give you a better
    idea of what to do in case of an exception.Yes i know this. I am practicing this in my non-j2ee server applications. But the j2ee app im making, i just pass the db url in the descriptor and the app server automatically creates the connection for my app. So where would i put exception handling?
    2. how can i stop my MDB from processing the same
    message?Guaranteed delivery is not supposed to stop
    processing. It will continue to process the message
    after certain intervals till the message is
    delivered. You shouldn't deliver it at all, if you
    are able to detect that the database is off
    The problem here is that my MDB automatically retrieves the message from the JMS queue server. Im not the one retrieving the messages manually.
    My assumed behavior of topic MDB is once the a certain MDB retrieves a message it will not retrieve the same message anymore.
    thank you in advance.
    leigh

  • Handling error in XI with CCMS and Alert Monitor

    Hello,
    I have configured the CCMS for handling XI error and use the auto-reaction method CCMS_Send_Alert_to_ALM for sending an alert when i have for exemple a mapping error.
    The issues are :
    1) When an alert is catched I can send an email or having a notification in the alertinbox but not the both.
    2) When an alert is catched in the CCMS, this alert is in an active status and i can't receive a second alert if another error occurs in XI until i have completed manually the first alert. Is it possible to complet this alert automatically or having more than one alert active for the same node in the CCMS ?
    Regards,
    Vincent.

    Gopesh
    The alerts are displayed to the recipient in one of the following programs:
    .In the Universal Work List (UWL of the Enterprise Portal) as of SAP NetWeaver ’04
    · In an application that accesses the alerts using an API
    · In the Alert Inbox. The Alert Inbox is an application based on Business Server Pages (BSP),which can be called using the transaction ALRTINBOX or the corresponding URL
    (http:///sap/bc/bsp/sap/alertinbox).
    There are also a number of external communication methods available. You can configure these in SAPconnect (transaction SCOT) and use them in addition to inform the recipient of an alert about the problem: Internet mail, SMS, and fax.
    Just to cross check have you configured your alerts using the below urls:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/aeeda66b-0a01-0010-6884-876fac1c4a2d
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/be79a16b-0a01-0010-51b8-9b6d1968338d
    Regards,
    ---Satish

  • SPEL - Using SQL queries along with Function security

    Hi,
    I have tried the basic features of SPEL using function security and VO attribute. I would like to know if there is a way where I can write SQL or PLSQL blocks and set SPEL.
    I am trying to relate the functionality of Oracle Forms, where we can personalize and perform actions depending on the SQL statements.
    Could you please help.
    Regards,
    BM

    Hi Sushant,
    Thanks for the reply. I am aware of extending a view object and setting SPEL. I want a method where I can achieve SPEL without extending any BC4J object.
    Regards,
    BM

  • Tutorial events handler in firefox differences with chrome and IE

    I have this code:
    var inp1 = document.createElement("input");
    inp1.type = "button";
    inp1.value = " Delete ";
    var bott = "boton" + i.toString();
    inp1.id = "prueba" + i;
    inp1.className = "boton";
    inp1.onclick = function() {deleteItem(event)};
    function deleteItem(event) {
    var tname = event.srcElement || event.target;
    var tname1 = tname.id;
    works for chrome but not firefox

    What kind of tutorial are you writing?
    Generally speaking, you should never recommend detecting browser capabilities by strings in the navigator properties. It is always better to use object/property/method detection if possible. Otherwise, you may miss crucial changes made in more recent versions of a browser, such as IE9 and later. Also, you should consider using the standardized approach to defining event handlers, which is addEventListener().
    Here is an alternative example:
    var inp1 = document.createElement("input");
    inp1.type = "button";
    inp1.value = " Delete ";
    inp1.id = "prueba" + i;
    // For best results, add element to the document before
    // setting event listeners
    if (inp1.addEventListener)
    inp1.addEventListener("click", deleteItem, false);
    else
    inp1.onclick = deleteItem;
    function deleteItem(evt){
    if (!evt) evt = window.event; // old IE
    var tgt = evt.target || evt.srcElement;
    alert(tgt.id); //for debug/test only
    return false; //for debug/test only
    ...

  • How to use SQL String functions with JPA and SAP NW

    Hi Everyone,
    I'm recently got the following problem:
    I have a Web Service project using JPA. But as i found out SAPs JPA implementation or more precisely openSQL restricts the use of the LOWER() function, which converts a String to lower case.
    Now I am looking for some sort of workaround. I want to execute the following JPQL query:
    SELECT bp FROM BusinessPartner bp WHERE LOWER(bp.companyName) LIKE LOWER(:companyName)
    I assume there is somewhere a flag to disable this restrictions, because there might be cases, like mine, where this standard functions are needed.
    Kind Regards,
    Carl

    Hi Vladimir,
    no it's not the same issue, because I am asking for a solution for this problem. There have to be ways to bypass this. Otherwise you can't use JPA properly. This is too much of a restriction!
    Is there no possibility to change to another implementation than openSQL?
    Regards,
    Carl
    Edited by: Carl Simon Heckmann on Feb 2, 2009 2:26 PM

  • Creating a report with user and lastlogintime

    Hello,
    I need to create a report to show the users and their lastlogintime.
    How can this be accomplished?
    We have OIM 10g integrated with OAM and OID.
    Thanks
    Khanh

    Hi,
    Yes, It should be possible if your OAM is storing user's session.
    http://docs.oracle.com/cd/E21764_01/doc.1111/e15478/session.htm#CHDDAGHI
    Try to make some SQL queries using OAM DB and execute those queries using BI publisher to generate the reports.
    Just check whether OOTB OAM reports includes any such kind of reports.
    http://docs.oracle.com/cd/E21764_01/doc.1111/e15478/audit.htm#BABEJGAA
    ~J

  • Problem with Latches and Parallelising PL/SQL Cursors

    In 9i i have process that do the following:
    PROCEDURE LoadClients IS
      CURSOR cChanges IS
        SELECT ...
        WHERE MOD(PK,pnTotalJobs>) = pnThisJob To call this I do the following
      nTOTALJOBS CONSTANT := 2;
    BEGIN
      FOR i IN 1..nTOTALJOBS LOOP
        DBMS_JOB.SUBMIT(LoadClient(pnTotalJobs=>nTOTALJOBS, pnThisJob=>i-1));
      END LOOP;
      COMMIT;So by changing the value of the constant - nTOTALJOBS - I can control the number of instances of LoadClient that run. This means I only need one procedure which can be called multiple times, making maintenance simpler than having multiple procedures.
    This process has been running successfully on several procedures of over a year. However recently I have been having trouble with latches in memory. I think these are related to using the variables in the cursor and part of the oracle treating the different queries as being identical. This results in locks in memory and none of the jobs running. In most cases I'm setting nTOTALJOBS to 2. I'm looking into the further with my DBAs.
    My questions are:
    1. Has anyone come across this sort of problem before?
    2. If so is there something I can do in my code or DB parameters to alleviate or test this?
    Notes.
    1. The process uses row by row processing in PL/SQL This done to get row by row error handling. I'm not going to change this in the short-term
    2. The SQL does a call over a database link, I don't know if this has any effect.
    3. This method does have a proven performance benefit
    4. The code snippets above are just illustrative, I'm not asking for syntax corrections.
    Thank you for taking the time to read through this.

    I would first investigate the "problem with latches" to be sure that it has anything to do with these jobs that you are submitting.
    Your concern seems to be "because I am submitting multiple copies of the same PLSQL procedure to run concurrently, am I running into latching issues ?".
    Take a step back and look at
    a. MultiUser OLTP environments : At any time you can have more than a few users running the same SQL queries submitted through Forms / Client Frontends.
    b. ERP Report Extractions (eg in Oracle EBusiness Suite or Peoplesoft) : At any time (say during the daily batch runs ?) you can have multiple copies of the same report (with different bind variables for different business_units / countries etc) running concurrently and extracting reports.
    The question would be : How many concurrent executions of the same code is too much ?
    I would say that latching issues come up on :
    a. Shared Pool : Multiple sessions attempting to load SQL statements and Parse SQL statements
    You could reduce some of this with reusable SQLs and bind variables instead of literals in quick running jobs / user front end screens etc
    b. Buffer Cache : Hot Blocks being frequently pinned -- eg index root blocks or "busy" table blocks.
    If you are running, say 4-8 concurrent copies of the the same code on a 4 CPU or 8 CPU machine, you may not be running into latching issues on the code -- "may not be" -- we can't be too sure, until we identify which latches are under "issue".
    However, if the queries are executing nested loops and frequently accessing the same index blocks, you may more likely be having issues with latches on cache buffer chains.
    So, this is what I would suggest :
    a. Identify the size and scale of the "issues" -- how much CPU time / wait time is accounted for by the latches in relation to the total response time of each of the jobs
    b. Identify which latches are the ones under contention
    c. On the basis of which latches are the holding up performance, decide your next course of action.
    Hemant K Chitale
    http://hemantoracledba.blogspot.com

  • Erratic Report Region Behavior with Dynamic SQL Queries

    I'm running HTMLDB v 1.5.1.00.12 and I've noticed some odd behavior with report regions using dynamic SQL queries. Every so often, our testers will run a page containing a dynamic sql report region and get the following error, (despite the fact the query was working only moments ago and no other developer has touched it):
    ORA-06502: PL/SQL: numeric or value error: character string buffer too small
    or sometimes
    failed to parse SQL query:ORA-01403: no data found
    The only solution I've found so far is to:
    1) Make a copy of the failed report region.
    2) Disable or delete the original failed report region.
    The new copy of the report region runs without issue.
    My search of the forums turned up the following two threads, but neither provided me with a clear explanation of the cause, and how to avoid it:
    ORA-06502:PL/SQL: numeric or value error: character string buffer too small
    Re: Import Export Error (ORA-06502)
    The columns being returned are below the 4000 character limit, and the rows being returned are far less than 32k in size.
    Could this have anything to do with the way HTMLDB is internally storing the PL/SQL used to generate the dynamic SQL Query? Is there any known issue related to this with that version of HTMLDB?
    This problem occurs without any discernable pattern or consistency, making it hard to determine where I should focus my efforts in tracking down the cause.

    Hi all,
    My report seems to be behaving correctly once i set it to "Use Generic Column Names (parse query at runtime only)" :)
    Cheers,
    Joel

  • Problem with foreign and primary keys migration from SQL Server to Oracle

    Hi folks, i'm using SQL Developer to migrate from a SQL Server database to Oracle and i'm stuck with a couple issues:
    The worst of them so far is the fact that i can't migrate any of the PKs and FKs. After successfully capturing the SQL Server DB model and converting it to Oracle, when the tool generates the scripts, all ALTER TABLE queries that add the PKs and FKs have their target columns duplicated.
    for example: when i'm trying to migrate a simple table that contains an Id (PK) and Name columns, the tool generates the following scripts:
    PROMPT Creating Table TestTable...
    CREATE TABLE TestTable (
    Id NUMBER(10,0) NOT NULL,
    Name VARCHAR2 NOT NULL
    PROMPT Creating Primary Key Constraint PK_TestTable on table TestTable ...
    ALTER TABLE TestTable
    ADD CONSTRAINT PK_TestTable PRIMARY KEY
    Id,
    Id
    ENABLE
    As for the FKs, the tool duplicates the columns as well:
    ALTER TABLE SomeTable
    ADD CONSTRAINT FK_SomeTable_SomeTable2 FOREIGN KEY
    SomeTable2Id,
    SomeTable2Id
    REFERENCES SomeTable2
    Id,
    Id
    ENABLE
    Does anyone have a clue on how to solve these issues? I'd be greatly thankful for any answers!

    Hi Fernando,
    I was unable to replicate this issue. My primary / foreign keys where defined using unique columns.
    PROMPT Creating Primary Key Constraint PK_Suppliers on table Suppliers ...
    ALTER TABLE Suppliers
    ADD CONSTRAINT PK_Suppliers PRIMARY KEY
    SupplierID
    ENABLE
    I tried a few things like
    capturing twice and renaming both models the same
    renaming the converted models
    but with no luck.
    I think this issue is occuring either at the capture or convert phase.
    1) Are you performing the capture online or offline?
    2) Can you provide a the entire DDL for one of these tables and its indexes to see if I can replicate?
    3) Did the capture or convert fail or have to be redone at any stage ?
    I all else fails I would attempt a capture and convert again using a brand new repository (create a new schema in Oracle and associate the migration repository with it).
    Regards,
    Dermot
    SQL Developer Team
    Edited by: Dermot ONeill on Oct 22, 2009 12:18 PM

  • ? in SQL Queries and not using prepared statements

    Using EclipseLink 1.1.1
    Prepared Statements are disabled
    In our production server something went wrong and one of our Read Queries started erroring. A DatabaseException was thrown and we log the "getQuery.getSQLString()" statement. We found this query in the logs:
    SELECT t1.ID, t1.NAME, t1.DESCRIPTION, t1.EXTREFID, t1.STYLESHEET, t1.DDSVNVERSION, t1.FIRSTNAME, t1.LASTNAME, t1.EMAILADDR, t1.PHONENUMBER, t1.ADDRESS, t1.ADDRESS2, t1.CITY, t1.STATE, t1.POSTALCODE, t1.COUNTRY, t1.ADMINACCTNAME, t1.HASDOCUMENTS, t1.HASTIMEDNOTIFICATIONS, t1.STATUS, t1.ENTRYDATE, t1.EVALEXPDATE, t1.LASTREMINDDATE, t1.FULLUSERS, t1.LIMUSERS, t1.REQUSERS, t1.ISENTERPRISE, t1.EXPDATE, t1.ISDISABLED, t1.DISABLEDDATE, t1.NEEDLICENSEAGREEMENT, t1.ISWARNINGDISABLED, t1.LOCALE, t1.TIMEZONE, t1.CURRENCY, t1.DOMAIN, t1.DOCUMENTSIZE, t1.EXTRADOCUMENTSTORAGE, t1.ONDEMANDOPTIONS, t1.SSOTYPE, t1.RESELLERID, t1.ACCOUNTREPID, t1.LASTUSAGEREPORTDATE, t1.NEXTUSAGEREPORTDATE, t1.USAGEREPORTATTEMPTS FROM T_SSOOPTIONS t0, T_CUSTOMERS t1 WHERE *((((t0.SSOENABLED = ?) AND (t1.SSOTYPE IN (?, ?))) AND (UPPER(t1.DOMAIN) = ?)) AND (t0.CUSTOMERID = t1.ID))*
    Notice the values weren't entered into the where clause. We had to bounce the application to fix the problem. I've never seen this before. I've added more debugging statements to the code - so if this happens again in the future I'll have more information to report on. In the mean time I'm wondering if anyone else has every seen a problem of this nature.

    Database error due to invalid SQL statement.
    I don't have a stack, we were catching the exception and not printing the stack :(
    Like I mentioned in my first post, I added more debugging code (e.printStackTrace()). I understand this is hard to track down without more information. I was just hoping you guys had seen something like this before and had any insight. Like I mentioned before: this is on our production server. I've never seen this type of error before. That particular server (we run in a cluster mode) had been up for several days and then started generating that error. IT bounced the node and everything went back to normal. We have been using toplink for about 5 years now and have never seen this problem, until August 3rd 2009. The only thing that has changed recently is our migration from toplink 10 to EclipseLink. I was wondering if anyone knows if anything had changed in EclipseLink/toplink 11 with the generation of SQL queries.
    I'll keep looking. There is more debugging code in there now. Since the error was "Database error due to invalid SQL statement" this implies the SQL was generated, exited that part of the code and was sent to the db where it failed. I'm afraid the printStackTrace won't help if this error happens again.

  • Generating XML from SQL queries and saving to an xml file?

    Hi there,
    I was wondering if somebody could help with regards to the following:
    Generating XML from SQL queries and saving to a xml file?
    We want to have a procedure(PL/SQL) that accepts an order number as an input parameter(the procedure
    is accessed by our software on the client machine).
    Using this order number we do a couple of SQL queries.
    My first question: What would be our best option to convert the result of the
    queries to xml?
    Second Question: Once the XML has been generated, how do we save that XML to a file?
    (The XML file is going to be saved on the file system of the server that
    the database is running on.)
    Now our procedure will also have a output parameter which returns the filename to us. eg. Order1001.xml
    Our software on the client machine will then ftp this XML file(based on the output parameter[filename]) to
    the client hard drive.
    Any information would be greatly appreciated.
    Thanking you,
    Francois

    If you are using 9iR2 you do not need to do any of this..
    You can create an XML as an XMLType using the new SQL/XML operators. You can insert this XML into the XML DB repository using DBMS_XDB.createResource. You can then access the document from the resource. You can also return the XMLType containing the XML directly from the PL/SQL Procedure.

  • Generating XML from SQL queries and saving to a xml file?

    Hi there,
    I was wondering if somebody could help with regards to the following:
    Generating XML from SQL queries and saving to a xml file?
    We want to have a stored procedure(PL/SQL) that accepts an order number as an input parameter(the procedure
    is accessed by our software on the client machine).
    Using this order number we do a couple of SQL queries.
    My first question: What would be our best option to convert the result of the
    queries to xml?
    Second Question: Once the XML has been generated, how do we save that XML to a file?
    (The XML file is going to be saved on the file system of the server that
    the database is running on.)
    Now our procedure will also have a output parameter which returns the filename to us. eg. Order1001.xml
    Our software on the client machine will then ftp this XML file(based on the output parameter[filename]) to
    the client hard drive.
    Any information would be greatly appreciated.
    Thanking you,
    Francois

    Hi
    Here is an example of some code that i am using on Oracle 817.
    The create_file procedure is the one that creates the file.
    The orher procedures are utility procedures that can be used with any XML file.
    PROCEDURE create_file_with_root(po_xmldoc OUT xmldom.DOMDocument,
    pi_root_tag IN VARCHAR2,
                                            po_root_element OUT xmldom.domelement,
                                            po_root_node OUT xmldom.domnode,
                                            pi_doctype_url IN VARCHAR2) IS
    xmldoc xmldom.DOMDocument;
    root xmldom.domnode;
    root_node xmldom.domnode;
    root_element xmldom.domelement;
    record_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    BEGIN
    xmldoc := xmldom.newDOMDocument;
    xmldom.setVersion(xmldoc, '1.0');
    xmldom.setDoctype(xmldoc, pi_root_tag, pi_doctype_url,'');
    -- Create the root --
    root := xmldom.makeNode(xmldoc);
    -- Create the root element in the file --
    create_element_and_append(xmldoc, pi_root_tag, root, root_element, root_node);
    po_xmldoc := xmldoc;
    po_root_node := root_node;
    po_root_element := root_element;
    END create_file_with_root;
    PROCEDURE create_element_and_append(pi_xmldoc IN OUT xmldom.DOMDocument,
    pi_element_name IN VARCHAR2,
                                            pi_parent_node IN xmldom.domnode,
                                            po_new_element OUT xmldom.domelement,
                                            po_new_node OUT xmldom.domnode) IS
    element xmldom.domelement;
    child_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    BEGIN
    element := xmldom.createElement(pi_xmldoc, pi_element_name);
    child_node := xmldom.makeNode(element);
    -- Append the new node to the parent --
    newelenode := xmldom.appendchild(pi_parent_node, child_node);
    po_new_node := child_node;
    po_new_element := element;
    END create_element_and_append;
    FUNCTION create_text_element(pio_xmldoc IN OUT xmldom.DOMDocument, pi_element_name IN VARCHAR2,
    pi_element_data IN VARCHAR2, pi_parent_node IN xmldom.domnode) RETURN xmldom.domnode IS
    parent_node xmldom.domnode;                                   
    child_node xmldom.domnode;
    child_element xmldom.domelement;
    newelenode xmldom.DOMNode;
    textele xmldom.DOMText;
    compnode xmldom.DOMNode;
    BEGIN
    create_element_and_append(pio_xmldoc, pi_element_name, pi_parent_node, child_element, child_node);
    parent_node := child_node;
    -- Create a text node --
    textele := xmldom.createTextNode(pio_xmldoc, pi_element_data);
    child_node := xmldom.makeNode(textele);
    -- Link the text node to the new node --
    compnode := xmldom.appendChild(parent_node, child_node);
    RETURN newelenode;
    END create_text_element;
    PROCEDURE create_file IS
    xmldoc xmldom.DOMDocument;
    root_node xmldom.domnode;
    xml_doctype xmldom.DOMDocumentType;
    root_element xmldom.domelement;
    record_element xmldom.domelement;
    record_node xmldom.domnode;
    parent_node xmldom.domnode;
    child_node xmldom.domnode;
    newelenode xmldom.DOMNode;
    textele xmldom.DOMText;
    compnode xmldom.DOMNode;
    BEGIN
    xmldoc := xmldom.newDOMDocument;
    xmldom.setVersion(xmldoc, '1.0');
    create_file_with_root(xmldoc, 'root', root_element, root_node, 'test.dtd');
    xmldom.setAttribute(root_element, 'interface_type', 'EXCHANGE_RATES');
    -- Create the record element in the file --
    create_element_and_append(xmldoc, 'record', root_node, record_element, record_node);
    parent_node := create_text_element(xmldoc, 'title', 'Mr', record_node);
    parent_node := create_text_element(xmldoc, 'name', 'Joe', record_node);
    parent_node := create_text_element(xmldoc,'surname', 'Blogs', record_node);
    -- Create the record element in the file --
    create_element_and_append(xmldoc, 'record', root_node, record_element, record_node);
    parent_node := create_text_element(xmldoc, 'title', 'Mrs', record_node);
    parent_node := create_text_element(xmldoc, 'name', 'A', record_node);
    parent_node := create_text_element(xmldoc, 'surname', 'B', record_node);
    -- write the newly created dom document into the buffer assuming it is less than 32K
    xmldom.writeTofile(xmldoc, 'c:\laiki\willow_data\test.xml');
    EXCEPTION
    WHEN xmldom.INDEX_SIZE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Index Size error');
    WHEN xmldom.DOMSTRING_SIZE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'String Size error');
    WHEN xmldom.HIERARCHY_REQUEST_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Hierarchy request error');
    WHEN xmldom.WRONG_DOCUMENT_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Wrong doc error');
    WHEN xmldom.INVALID_CHARACTER_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Invalid Char error');
    WHEN xmldom.NO_DATA_ALLOWED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Nod data allowed error');
    WHEN xmldom.NO_MODIFICATION_ALLOWED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'No mod allowed error');
    WHEN xmldom.NOT_FOUND_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Not found error');
    WHEN xmldom.NOT_SUPPORTED_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'Not supported error');
    WHEN xmldom.INUSE_ATTRIBUTE_ERR THEN
    RAISE_APPLICATION_ERROR(-20120, 'In use attr error');
    WHEN OTHERS THEN
    dbms_output.put_line('exception occured' || SQLCODE || SUBSTR(SQLERRM, 1, 100));
    END create_file;

Maybe you are looking for

  • How do I get non-iTunes music onto iCloud (*not* iTunes match)?

    I recently won a new iPad in a drawing, and am now trying to figure out how to sync some of my music on it through iCloud.  The issues here are 1) I don't own any music from the iTunes store (all my music was ripped from my own CD collection), and 2)

  • How to check a file that has been encoded

    Hello, A few months back I encoded a few videos after editing them. I forgot which settings I had Premiere set at, is there any way to look at the video and get the settings from there? Thanks

  • Partial coupon payments

    Hi, Gurus I came accross a problem. Hope for your piece of advice We have got some bonds and the issuer paid a coupon amount partialy - different amounts and dates. Eg, we have got coupon flow $100 on 01.05.2011 which is in fact paid by the issuer wi

  • IPHOTO launches when i switch computer on

    i Photo launches everytime I switch computer on. Please can someone advise me how to stop this happening.

  • HP d5560 Wireless Issue - No IP Address (Mac OS 10.9)

    Hi there, I recently moved house. In my previous house I had my printer set-up and working wirelessly. I've moved and now have a new Wireless hub and I can not get my printer to connect with my Virgin Media Super Hub. I have tried doing the one-touch