How to pass XMLType as parameters to Java stored procs ?

How to pass XMLType as parameters to Java stored procs ?
ORA-00932: inconsistent datatypes: expected an IN argument at position 1 that is an instance of an Oracle type convertible to an instance of a user defined Java class got an Oracle type that could not be converted to a java class
Java stored proc -->
CREATE or replace FUNCTION testJavaStoredProcMerge( entity xmltype,event xmltype ) RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'XDBMergeOp.merge(org.w3c.dom.Document,org.w3c.dom.Document) return java.lang.String';
PL/SQL -->
declare
theQuote VARCHAR2(50);
entity xmltype;
event xmltype;
begin
entity := xmltype('<Quote><Fields><Field1>f1</Field1></Fields></Quote>');
event := xmltype('<Quote><Fields><Field2>f2</Field2></Fields></Quote>');
theQuote := testJavaStoredProcMerge(entity,event);
dbms_output.put_line(theQuote);
end;
Java class -->
public class XDBMergeOp {
public static String merge(Document entity, Document event) throws Exception {
return ...
Thanks in advance.

I think you'll need to use XMLType and then extract the DOM inside java..
create or replace package SAXLOADER
as
  procedure LOAD(P_PARAMETERS XMLTYPE, P_DATASOURCE BFILE);
end;
create or replace package body SAXLOADER
as
procedure LOAD(P_PARAMETERS XMLTYPE, P_DATASOURCE BFILE)
AS
LANGUAGE JAVA
NAME 'com.oracle.st.xmldb.pm.saxLoader.SaxProcessor.saxLoader ( oracle.xdb.XMLType, oracle.sql.BFILE)';
end;
  public static void saxLoader(XMLType parameterSettings, BFILE dataSource)
  throws Exception {
    Document parameters = parameterSettings.getDocument();
    SaxProcessor app = new SaxProcessor(parameters);
    app.processXMLFile(dataSource);
  Edited by: mdrake on Apr 6, 2009 11:28 AM

Similar Messages

  • How to pass a refcursor to a java stored proc

    Hi all,
    Please forgive me as I am new to Java and JDeveloper....
    I want to pass a refcursor to a java stored proc. Does anyone know how to accomplish this?
    Thanks,
    dayneo

    Hi,
    As Avi has indicated, you can map ref cursor to java.sql.ResultSet
    here are Call Specs and a code snippet from chapter 3 in my book.
    procedure rcproc(rc OUT EmpCurTyp)
    as language java
    name 'refcur.refcurproc(java.sql.ResultSet[])';
    function rcfunc return EmpCurTyp
    as language java
    name 'refcur.refcurfunc() returns java.sql.ResultSet';
    * Function returning a REF CURSOR
    public static ResultSet refcurfunc () throws SQLException
    Connection conn = null;
    conn = DriverManager.getConnection("jdbc:oracle:kprb:");
    ((OracleConnection)conn).setCreateStatementAsRefCursor(true);
    Statement stmt = conn.createStatement();
    ((OracleStatement)stmt).setRowPrefetch(1);
    ResultSet rset = stmt.executeQuery("select * from EMP order by empno");
    // fetch one row
    if (rset.next())
    System.out.println("Ename = " + rset.getString(2));
    return rset;
    Kuassi

  • How to pass the report parameters through java not by using URL

    Hello...
    I have an oracle App. Server 10g with report service
    I can the report using the URL :
    http://host:Port/rwservlet/report=....
    and passing the report parameters ...
    But is there any way to call the report by pdf format and passing the parameters from java without using the url ???

    thank you shahcsanjay for your reply
    but I think that web.showDocument can not be used by ordinary java web application ..
    I think it can be used only with with "oracle forms" Am I right ?
    If no can you please tell me where can I find a useful document about how to use web.showDocument ...
    thanks again
    Saleem

  • How to pass Table name as argument in Stored Proc

    Hi ,
    I have a requirement wherein the table name has to be passed as an argument of SP and the output should be the count from that table based on some filter condition.
    Something like this:
    create or replace procedure Testing(p_table varchar2,p_count OUT integer) AS
    begin
    select count(1) into p_count from p_table;
    end;
    Getting the error on running above code:
    PL/SQL: ORA-00942: table or view does not exist
    Please let me know how can we do this?
    Thanks.

    Example :SQL> create or replace procedure Testing(
      2     p_table varchar2,
      3     p_count OUT integer) AS
      4  begin
      5     execute immediate 'select count(1) from '||p_table
      6             into p_count;
      7  end;
      8  /
    Procedure created.
    SQL> var n1 number;
    SQL> exec Testing('user_objects',:n1);
    PL/SQL procedure successfully completed.
    SQL> print n1
            N1
            37
    SQL>

  • How to publish a Java Stored proc....

    Hi,
    I wrote the following Java code and loaded it into Oracle 8i, as Java stored procs.
    public class EmployeeStruct
    public int EmployeeNum;
    public String EmployeeName;
    public String Designation;
    and
    import java.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*;
    public class InsertData
    public static InsertEmployee(EmployeeStruct eps) throws SQLException
    Connection conn =
    DriverManager.getConnection("jdbc:default:connection:");
    String sql = "INSERT INTO EMPLOYEE_TABLE VALUES (?, ?, ?)";
    try
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setInt(1, eps.EmployeeNum);
    pstmt.setString(2, eps.EmployeeName);
    pstmt.setString(3, eps.Designation);
    pstmt.executeUpdate();
    pstmt.close();
    catch (SQLException e)
    System.out.println(e.getMessage());
    My question is how do I publish the InsertData proc. I tried :
    CREATE OR REPLACE PROCEDURE insert_data (e EMPLOYEESTRUCT) AS LANGUAGE JAVA
    NAME 'INSERTDATA(EmployeeStruct)';
    but this gives me PLS-00201, identifier EmployeeStruct must be declared.
    COULD SOMEONE HELP ME/ SHOW ME HOW ?
    I wish to call the java stored proc from an external java program.
    rgds
    Jeevan S
    null

    You can't pass Java classes to Java Stored Procedures via the PL/SQL wrapper. You'll have to write your wrapper to take the int as a NUMBER and the two Strings separately as VARCHAR2s, e.g.:
    CREATE OR REPLACE PROCEDURE insert_data
    EmployeeNum IN NUMBER,
    EmployeeName IN VARCHAR2,
    Designation IN VARCHAR2
    AS LANGUAGE JAVA
    NAME 'InsertData.InsertEmployee(int, java.lang.String, java.lang.String)';
    John H.
    null

  • How to pass selection screen parameters in text elements?

    how to pass selection screen parameters in text elements?

    don't you mean he other way around. Assign text-elements (selection texts) to select options?
    This you do in the menu where you can find text-elements, selection texts.
    menu Goto->text elements->selection texts.
    Edited by: Micky Oestreich on May 10, 2008 2:45 PM

  • How to pass context based parameters to subquery?

    Hello to All!
    How to pass context based parameters to subquery of custom folder when I schedule workbook?
    Thanks, Oleg

    Hi Russ
    Yes, I've done this too. Basic SQL though will not allow the updating of a table inside a function, so we have to get clever. The trick is to use the PRAGMA AUTONOMOUS TRANSACTION command. Here's an example:
    FUNCTION UPDATE_MYTABLE(P_VALUE IN NUMBER)
    RETURN VARCHAR2 IS
    PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
    UPDATE SCHEMA_OWNER.MY_TABLE SET MY_VALUE = P_VALUE;
    COMMIT;
    RETURN('Done');
    END UPDATE_TABLE;
    When the update has been completed the Discoverer worksheet will respond with 'Done'.
    Everyone: don't forget to grant EXECUTE on this function to all of the necessary users, including the EUL owner, and also don't forget to import the function using the Admin edition so that it is available for the users. You will also need to make sure that all necessary users have been granted the UPDATE privilege on the table.
    I hope this helps
    Regards
    Michael

  • How to pass whitespaces as parameters to sqlplus

    Hi all,
    does anyone of you know how to pass whitespaces as parameters to sqlplus?
    I am struggeling with with problem for quite a while now.
    I tried doing this the following way:
    sqlplus mydb/[email protected] @mypath\myfile.sql param1 param2 ' ' param4 ' '
    sqlplus mydb/[email protected] @mypath\myfile.sql param1 param2 " " param4 " "
    sqlplus mydb/[email protected] @mypath\myfile.sql param1 param2 '\ ' param4 '\ '
    but none of this is working. Any more ideas?
    Thanks in advance!
    Doug

    Hi,
    This could do it :[[email protected] ~]$ cat script.sql
    DEFINE myparam1 = "&1 ";
    DEFINE myparam2 = "&2 ";
    DEFINE myparam3 = "&3 ";
    DEFINE myparam4 = "&4 ";
    DEFINE myparam5 = "&5 ";
    select '&myparam1.' c from dual
    union all select '&myparam2.'  from dual
    union all select '&myparam3.'  from dual
    union all select '&myparam4.'  from dual
    union all select '&myparam5.'  from dual;
    undefine myparam1
    undefine myparam2
    undefine myparam3
    undefine myparam4
    undefine myparam5
    [[email protected] ~]$ sqlplus scott/TIGER
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Jan 3 16:20:49 2012
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> @l
    [email protected] SQL>@script a " " c " " e
    C
    a
    c
    e

  • Java Stored Proc, passing BLOB, not stored in a table.

    I have checked this article, and found it will not suit my needs.
    http://otn.oracle.com/sample_code/tech/java/codesnippet/jdbc/lob/LobToSP.html
    I have even looked at the 4 articles on the "JSP How-To Documents" page.
    I need to pass in a BLOB to my Java Stored proc, but not store it in the DB - My java code manipulates the LOB and it should never go into the DB. I know I could do the normal store, get an id and pass to my JSP... but that is a poor way to implement this. Are there any code samples on how to do this please ?
    D

    WOW! That seems like a very bad design.
    Is it just the compiler that has the problem or is the PL/SQL code inside the stored procedure also affected? For example, if I'm doing an
    EXECUTE IMMEDIATE 'insert ... INTO OtherSchema.tblTest';
    Is this going to be a problem?
    The problem with granting the access explicitly is the Archive Schema, which has the stored procedure that is failing, might not exist at the time when the other schemas are created. Therefore, there is no user to grant permissions to. I solved this by granting permissions to the role and when the archive user is created it is assigned that role.
    This seems like the proper way to solve this problem.

  • To pass new session variable value to stored proc before running a report.

    Hi,
    Below is summary of the report requirement -
    Database level design
    1. Created a view and a global temporary table (GTT)
    2. Created an Oracle package procedure to accept from and to business dates on basis of which it will fetch, process and populate the GTT.
    Repository level design
    1. Created a business model containing the view and the GTT (mentioned above)
    2. Created two SESSION variables "from_dt" and "to_dt" to be initialized by their respective init blocks. Each of the variable is initialized with a DATE column value (of type DATETIME) from a database lookup table. I have also set the option "Enable that variable to be set by any user" for both variables.
    Query for these variables :
    from_dt = select from_date from <table>
    to_dt = select add_months(from_date,12) from <table>
    Presentation level design
    1. Using a text box, i display the default/initialized values of these variables like this -
    Current business date:@{biServer.variables['NQ_SESSION.from_dt']} Future business dt:@{biServer.variables['NQ_SESSION.to_dt']}
    Dates get displayed in YYYY-MM-DD 00:00:00 format
    The text msg displays these default dates and allows the user to specift different date range for which i create prompts as shown below.
    2. Using any random two columns of date type from the business model, i create two date dashboard prompts with labels "From Dt" and "To Dt".
    i select Calender Controls for both; setting Default To = Report Defaults.
    The Set Variable is set to Presentation variables - such that pv_from_dt maps to "From Dt" and pv_to_dt maps to "To Dt".
    3. i create the report using the business model created above. In the report "Advanced Tab" => "Prefix" field i specify the following -
    SET VARIABLE from_dt='@{pv_from_dt}',to_dt='@{pv_to_dt}';
    Note : The logic here is to display the default dates and allow user to specify different date values which will be stored in presentation variables.
    If the user does specify different "from dt" and "to dt" values, then using the presentation variables, i want to "write" back these new values to the corresponding session variables mentioned above.
    If the user does not specify different date range, then the default/initialized dates must be considered.
    I also display the default and new date values in the report title.
    Back to Repository level design
    To execute the stored procedure that will load the GTT before running the report I need to pass two date parameters to the stored procedure on basis of which it will fetch data, process and populate the GTT.
    In the Connection Pool --> Connection Script Tab --> Execute before query, I wrote the below query using the repository variables FROM_DT and TO_DT to execute the procedure -
    DECLARE
    v_from_dt date;
    v_to_dt date;
    BEGIN
    v_from_dt := VALUEOF(From_Dt);
    v_to_dt := VALUEOF(To_Dt);
    package_name1.package_body(v_from_dt,v_to_dt);
    END;
    Now when i try to run the report i get the following error :
    [nQSError: 10058] A general error has occurred. [nQSError: 23006] The session variable, NQ_SESSION.to_dt, has no value definition. (HY000)..
    Need help on this.
    Is it possible to "write back" a new value to a session variable ?
    Any other alternatives.
    Thanks
    Nusrat
    Edited by: user10309945 on Jan 24, 2011 10:08 PM

    Sandeep, I found a several topics where users describe saving values in DB through stored procedure or function. For example, [How to store OBIEE presentation level variable values in DB |http://forums.oracle.com/forums/thread.jspa?threadID=892006] I tried it and get an error
    *10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 17001] Oracle Error code: 14551, message: ORA-14551: cannot perform a DML operation inside a query ORA-06512*
    It's not a BI error. This error are generated by Oracle DB. If I write next:
    SELECT MyPLSQLFunction(p1,p2) FROM DUAL
    I get the same error.
    Oracle doesn't allow DML operations in SELECT.
    Did you relalize this feature yourself? Where did I mistake?

  • Java stored proc deploy problem

    I get follow error,when I deploy Java stored proc with JDeveloper3.2.
    Errors:
    *** Errors occurred while loading the archive into 8i JVM ***
    How can i do?
    Thanks a lot!!

    The problem is with the OUT parameters. If you read the documentation you will see that OUT parameters
    need to be declared as one element arrays. Hence this should compile:
    CREATE OR REPLACE PROCEDURE TEST ( id IN NUMBER,
    i IN NUMBER,
    j IN VARCHAR2,
    ret1 OUT NUMBER,
    ret2 OUT VARCHAR2,
    k IN NUMBER) AS
    LANGUAGE JAVA NAME 'com.fn.oracle.proc.trading.TestProcedure.testIt(int, double, java.lang.String, int[], java.lang.String[], int)';Cheers, APC

  • XML Parsing in Java Stored Proc--Oracle XML Support Installation?

    I am working with a third party product that is having difficulty running a java stored proc that is parsing a supplied XML file. The proc basically looks like:
    import java.io.IOException;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.w3c.dom.Document;
    import org.xml.sax.SAXException;
    InputStream is = getXMLAsInputStream(xml);
    try {
    DocumentBuilderFactory factory =
    DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse( is );
    ... parse the document ....
    catch (FactoryConfigurationError e) {
    // unable to get a document builder factory
    We are running on 9.2.0.6, HP-UX 64-bit. At first, when we would attempt to run the proc, a database hang would occur; now after attempting to install using loadjava jars for xerces2.6: ORA-29532: Java call terminated by uncaught Java exception:
    javax.xml.parsers.FactoryConfigurationError: Provider
    org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found)
    The vendor says that the errors we are getting when running are not due to any dependency on xerces or jre1.4, and that we need to "install Oracle XML support", but I'm not certain what this means (I cannot find any documentation on what to install). I believe that there are jars that need to be loaded into the database to support the XML parsing, as jre1.3 does not include built-in XML support, and Oracle 9.2.0.6 uses jre1.3.
    So...does anyone have any thoughts as to how to resolve the missing references? Is there a way to "install Oracle XML support", or is it to install the necessary jars?
    Thanks,
    Candi

    Candi,
    The following resources should be of help:
    Oracle9i Database Release 2 (9.2) Documentation Library
    In particular, check out the following:
    Java Developer's Guide
    Java Stored Procedures Developer's Guide
    XML API Reference - XDK and Oracle XML DB
    XML Database Developer's Guide - Oracle XML DB
    XML Developer's Kits Guide - XDK
    If that doesn't help, then try the following:
    OracleJVM and Java Stored Procedures
    XML Technology Center
    Good Luck,
    Avi.

  • Can we call a Java Stored Proc from a PL/SQL stored Proc?

    Hello!
    Do you know how to call a Java Stored Proc from a PL/SQL stored Proc? is it possible? Could you give me an exemple?
    If yes, in that java stored proc, can we do a call to an EJB running in a remote iAS ?
    Thank you!

    For the java stored proc called from pl/sql, the example above that uses dynamic sql should word :
    CREATE OR REPLACE PACKAGE MyPackage AS
    TYPE Ref_Cursor_t IS REF CURSOR;
    FUNCTION get_good_ids RETURN VARCHAR2 ;
    FUNCTION get_plsql_table_A RETURN Ref_Cursor_t;
    END MyPackage;
    CREATE OR REPLACE PACKAGE BODY MyPackage AS
    FUNCTION get_good_ids RETURN VARCHAR2
    AS LANGUAGE JAVA
    NAME 'MyServer.getGoodIds() return java.lang.String';
    FUNCTION get_plsql_table_A RETURN Ref_Cursor_t
    IS table_cursor Ref_Cursor_t;
    good_ids VARCHAR2(100);
    BEGIN
    good_ids := get_good_ids();
    OPEN table_cursor FOR 'SELECT id, name FROM TableA WHERE id IN ( ' &#0124; &#0124; good_ids &#0124; &#0124; ')';
    RETURN table_cursor;
    END;
    END MyPackage;
    public class MyServer{
    public static String getGoodIds() throws SQLException {
    return "1, 3, 6 ";
    null

  • Creating a java stored proc in jdev

    Does anyone have a quick ref guide to creating a java stored proc in jdev? I am missing early steps to correctly setup the project.
    Thanks in advance.

    Assuming you are using ADF BC, you can try something like the following on your Application Module:
    /* our java method to call a stored procedure to send email */
    public void sendEmail(String fromEmailAddress, String toEmailAddress,
    String subject, String body1, String body2,
    String body3, String body4, String body5) {
    Object[] parms =
    { fromEmailAddress, toEmailAddress, subject, body1, body2, body3,
    body4, body5 };
    callStoredProcedure("MSKCC.proc_send_mail(?,?,?,?,?,?,?,?)", parms);
    protected void callStoredProcedure(String stmt, Object[] bindVars) {
    PreparedStatement st = null;
    try {
    // 1. Create a JDBC PreparedStatement for
    st =
    getDBTransaction().createPreparedStatement("begin " + stmt + ";end;", 0);
    if (bindVars != null) {
    // 2. Loop over values for the bind variables passed in, if any
    for (int z = 0; z < bindVars.length; z++) {
    // 3. Set the value of each bind variable in the statement
    st.setObject(z + 1, bindVars[z]);
    // 4. Execute the statement
    st.executeUpdate();
    } catch (SQLException e) {
    throw new JboException(e);
    } finally {
    if (st != null) {
    try {
    // 5. Close the statement
    st.close();
    } catch (SQLException e) {
    }

  • Using an existing connection in a Java Stored Proc

    Hi,
    I have to invoke a Java stored procedure from a PL/SQL stored proc. In the Java stored proc I open a database connection & execute some SQLs. To do this can I use the same connection that is used to invoke the PL/SQL stored proc. In other words can we use the existing PL/SQL connection within a Java stored proc that is being called by the former PL/SQL instead of creating a new connection?
    Thanks in advance.
    Sunitha

    Ok I understood how to get the default connection from http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#05_01
    Connection conn = DriverManager.getConnection("jdbc:default:connection");However, I find that the Java stored proc is running slower in Oracle VM than invoking it from a command line Java program using thick driver from a remote machine.
    Thanks anyway.
    Sunitha.

Maybe you are looking for

  • Is there any option for voting on a list item in SharePoint 2013?

    Dear All, I am looking for a feature vote a for list item from multiple users and need to show consolidated results on that. for SharePoint 2013 we have "like", "rating" by using these can we show the consolidated results. otherwise is there any alte

  • Failure to sync with Outlook

    I've had my 8330 curve for about 2 months, and previously wrote about this problem, that of syncing over XP Dell with Outlook 2007.  I briefly had success, after not having success before and giving up.  That is, I was able to sync everything.  But t

  • Will not grab the paper on my HP all in one printer 2575

    Will not grab the paper on my HP printer.  Have checked for jam paper and tried different paper.  Any suggestions?

  • OIM-DB - Where is the right table?

    Hi, i need the table in the OIM-DB (10.2) where i can find the User Data and resource information? WWSEC??? Which User? ORASSO...? Please i need your help...

  • Apple watch on wifi

    when bluetooth is turned off how to be connected on the same wifi network with my apple watch it said you are disconnected with your phone, how to pair your apple watch with your phone on the same wifi network ?