Getting result of stored functions in UCM components

Hi,
I have to create UCM component that executes function stored in DB and somehow "inject" it's return value to iDoc.
How can I get return value of DB stored function?
I managed to run the function, but I can not get it's return value.
The only documentation I found is inside "documentation" folder from HowToComponents bundle, but there is no even javadoc for executeCallable that returns CallableResults.
The queries I used are:
{ ? = call package.func(?) }
or
BEGIN ? := package.func(?); END;
I added 2 parameters to these queries ( in queries html file)
In both cases the function gets executed (I see changes in DB)
after the execution I try to getInteger("param1_name") on returned CallableResults and recieve NullPointerException:
Runtime error: java.lang.NullPointerException
at oracle.jdbc.driver.OracleCallableStatement.getInt(OracleCallableStatement.java:1119)
at intradoc.jdbc.JdbcCallableResults.getData(JdbcCallableResults.java:203)
at intradoc.jdbc.JdbcCallableResults.getInteger(JdbcCallableResults.java:98)
at DatabaseProvider.DatabaseProviderHandler.executeReservation(DatabaseProviderHandler.java:224) <------ calling getInteger("param1_name")
the param1_name is not changed in iDoc.
Thanks.
Edited by: dpd on Jan 13, 2010 8:24 AM

Hi,
you can do this with just one script object.
For example the "MyTexts" script object with the string variables and a function to return the values.
var infotext1 = "Lorem ipsum dolor sit amet"
var infotext2 = "Non eram nescius Brute cum"
function getText(FieldNumber) {
          return eval("infotext" + FieldNumber);
To populate a field you can call the function in the script object with an argument, which is the alias for the varaible number you want to return.
You don't need to enter the full somExpression to your script object, the name is enough.
Textfeld1.rawValue = MyTexts.getText(1);

Similar Messages

  • How to get BOOLEAN from STORED FUNCTION

    We are calling legacy PLSQL stored procedures and functions via named queries. This has worked fine so far, but there are some functions which return the type 'BOOLEAN'. e.g.
    FUNCTION some_function( some_argument IN NUMBER) RETURN BOOLEAN;
    Where the return type is BOOLEAN calling the named query fails with
    Local Exception Stack:
    Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.0.0) (Build 060118)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: ORA-06550: line 1, column 13:
    PLS-00382: expression is of wrong type
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Error Code: 6550
    A couple of threads have hinted that what we are trying to do is not possible:
    How to get BOOLEAN from STORED PROCEDURES
    Re: Creating Named Query: from OracleCallableStatement
    This would possibly be due to 'restriction in the OCI layer'. Can anyone help? Is there really now way to call a valid PLSQL stored function via a named query when the return type is BOOLEAN?
    thanks

    I can't comment on possible issues you might have with the driver, but if it can be done in JDBC, it should be possible in TopLink.
    TopLink has the StoredFunctionCall which extends the StoredProcedureCall but adds an unnamed ouput parameter in the first spot of its parameter list. You will need to get the databasefield and set its type to BOOLEAN ie:
      DatabaseField returnField = (DatabaseField)yourStoredFunctionCall.getParameters().firstElement();
            returnField.setName(name);
            returnField.setSqlType(Type.BOOLEAN);Be sure not to use the setType() method, as I believe TopLink will try to use the Type.BIT when a boolean class is used as the classtype.
    Best Regards,
    Chris

  • How to get result of Select from stored function.

    I need to get result of select from a stored function.
    In the end of my stored function I makes final select (four columns).
    How it can be retrived from function?

    Hi,
    A function can only return one value, but it sounds like you want to return 4 values.
    The one value that you return can be a record, with many columns, such as a ROWTYPE, or a TYPE that you define.
    You can return an XMLTYPE that has whatever elements you want.
    You can write a procedure that has several OUT parameters. (You can have OUT parameters in a function, but a lot of people find that confusing.)
    In very special circumstance, you might consider returning a string that is a delimited list of values, such as '7639,SMITH,,17-DEC-1980'.
    Someoneelse has a good point.
    We could give a better answer if you ask a specific question, like:
    "I have this table ...
    I want a function such that, if I call it with these parameters ... I get ...
    but if I call it like this ... then I get ..."

  • Get the Stored Function Results

    If there is DML in my Stored Function ,how to Using View Objects to Select Stored Function Results?
    I want to get the Stored Function Results in my jsp.
    please give me the example jsp.Thanks!

    There's an article on my "Dive into BC4J" weblog that describes this.
    http://radio.weblogs.com/0118231/stories/2003/02/06/usingViewObjectsToSelectStoredFunctionResults.html

  • Help me in calling stored procedure and getting results

    hi
    i have a SP like this
    CREATE OR REPLACE PACKAGE P1 AS
    TYPE g_con_ref_cursor is REF CURSOR ;
    TYPE g_con_error IS RECORD
      error_code NUMBER,
      error_desc varchar2(2000)
    PROCEDURE PROC_CURSOR
    (i_str_userid  IN VARCHAR2,
      o_cur_ref_cur OUT g_con_ref_cursor,
      o_rec_error   OUT g_con_error,
      o_num_status  OUT NUMBER);
    END;
    and i now i am trying to call this SP using my java program
    i am able to register the out put params for 2nd and 4 th variable
    my doubt is how i can register the output param for g_con_errorand how i can get result from this ????
    my java program is like this
    Connection connection = DatabaseHelper.prepareConnection();
    CallableStatement proc = connection.prepareCall("{ call P1.PROC_CURSOR(?, ?, ?, ?) }");
    proc.setString(1,"jn26557");
    proc.registerOutParameter(2,oracle.jdbc.driver.OracleTypes.CURSOR);
    proc.registerOutParameter(3,Types.STRUCT,); //HOW TO SET  THIS ?????
    proc.registerOutParameter(4,oracle.jdbc.driver.OracleTypes.NUMERIC);
    proc.execute();
    plz help me in this
    i have no idea how to do it
    any help would be appreciated
    Thanks in advance
    Jaya Prakash Nalajala

    You have the requirements to build the stored procedure, what have you got so far?
    Post your attempt and any errors or issues that you might be experiencing. Writing the whole procedure for you (without the table structure even) is going to be difficult.

  • Stored function not returning result set unless recompiled

    Hi,
    I have a strange situation going on with a basic Java (1.6.0.17) application talking to an Oracle 11g (11.2.0.1.0) database. Basically what is happening is that sometimes a stored function's return value (a result set) is not making it as far as JDBC/Java, unless I recompile the stored function (with absolutely no changes to the application or function's code). I am always able to successfully see the result set if I call the function directly from within SQL Developer, just not on the Java app/JDBC side.
    I've tried running with 3 different physical Oracle 11g servers and tried running the app on a couple of machines. I'm wondering if this is either some kind of caching issue or perhaps a JDBC bug/misconfiguration.
    Any help would be greatly appreciated. Attached to this message:
    1. stored function code
    2. snippet of Java app code
    3. ODBC trace output when returned a empty result set (ie failure scenario)
    4. ODBC trace out when returned the correct result set (ie success scenario)
    * it's helpful if you compare the texts of 3 & 4 with Vim diff or WinMerge etc.
    ** as they're large I've just extracted the sections that had differences. Leave a message here and I can send you the full ones if necessary.
    1. stored function code
    ===============
    FUNCTION getRecordSet (
    ActionId Number
    RETURN CallingList.ref_cursor
    IS
    myDataCursor CallingList.ref_cursor;
    ActionId_ Number;
    BEGIN
    ActionId_ := ActionId;
    IF isActionExpired(ActionId) <= 0 THEN
    ActionId_ := 0;
    END IF;
    OPEN myDataCursor FOR
    SELECT
    C.ID,
    C.CUSTOMER_ID,
    C.CAMPAIGN_ID,
    c.phone,
    C.TRANSFERDN,
    (SELECT
    TTS_MESSAGE
    FROM CAMPAIGN CMP
    WHERE CMP.CAMPAIGN_ID = C.CAMPAIGN_ID) "TTS"
    FROM
    CALLING_LIST C
    WHERE
    C.ACTION_ID = ActionId_
    AND
    C.CALL_STATUS = 1
    AND
    C.CALLCOUNT > 0
    And rownum <=5;
    RETURN myDataCursor;
    EXCEPTION
    WHEN CURSOR_ALREADY_OPEN THEN
    RETURN NULL;
    WHEN INVALID_CURSOR THEN
    RETURN NULL;
    WHEN NO_DATA_FOUND THEN
    RETURN NULL;
    END getRecordSet;
    ....and the isActionExpired function that is called from within getResultSet is (but for all my testing it's been returning 1 with no problems)
    FUNCTION isActionExpired (
    ActionId number
    ) RETURN number
    AS
    Today varchar2(12);
    myCount number(6);
    BEGIN
    myCount := 0;
    today := to_char(sysdate, 'dd.mm.yyyy');
    SELECT
    count(*)
    INTO
    myCount
    FROM
    ACTION A
    where
    ACTION_ID = ActionId
    AND
    SYSDATE BETWEEN ACTION_STARTDATETIME
    AND
    ACTION_STOPDATETIME
    and
    SYSDATE BETWEEN to_date(today || ' ' || A.STARTTIME, 'dd.mm.yyyy HH24:MI:SS') and to_date(today || ' ' || A.ENDTIME, 'dd.mm.yyyy HH24:MI:SS')
    AND
    ACTION_STATUS = 1;
    return myCount;
    END isActionExpired;
    2. snippet of Java app code
    =================
    ... db connect logic...
    javax.management.MBeanServer mbs = null;
    javax.management.ObjectName name = null;
    try {
    String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
    name = new javax.management.ObjectName("com.oracle.jdbc:type=diagnosability,name="+loader);
    mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer();
    mbs.setAttribute(name, new javax.management.Attribute("LoggingEnabled", true));
    } catch (Exception e) {
    System.out.println("ORACLE TRACE ERROR: " + e.getStackTrace());
    try {
    String query = "begin ? := CALLINGLIST.getRecordSet(?); end;";
    CallableStatement stmt = conn.prepareCall(query);
    stmt.registerOutParameter(1, OracleTypes.CURSOR);
    stmt.setInt(2, actionId);
    stmt.execute();
    ResultSet rs = (ResultSet) stmt.getObject(1); // So, here it works.
    // print the results
    int count=0;
    while (rs.next()) {
    count++;
    stmt.close();
    System.out.println("rs count was: " + count);
    } catch (SQLException e) {
    System.out.println("Exception occurred: " + e.getMessage());
    3. ODBC trace output when returned a empty result set (ie failure scenario)
    ===============================================
    Jul 1, 2010 3:30:47 PM oracle.net.ns.Packet receive
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.net.ns.Packet receive
    TRACE_20: Debug: type=6, length=121, flags=0
    00 79 00 00 06 00 00 00 |.y......|
    00 00 06 22 01 06 00 01 |..."....|
    0A 00 00 00 07 03 C2 04 |........|
    0E 04 C3 5E 22 03 02 C1 |...^"...|
    2A 04 33 30 30 32 03 37 |*.3002.7|
    37 37 05 48 65 6C 6C 6F |77.Hello|
    08 01 06 00 00 01 02 00 |........|
    00 00 00 00 00 04 01 05 |........|
    01 01 02 05 7B 00 00 01 |....{...|
    02 00 03 00 00 00 00 00 |........|
    00 00 00 00 00 00 00 00 |........|
    00 01 01 00 00 00 00 19 |........|
    4F 52 41 2D 30 31 34 30 |ORA-0140|
    33 3A 20 6E 6F 20 64 61 |3:.no.da|
    74 61 20 66 6F 75 6E 64 |ta.found|
    0A |. |
    Jul 1, 2010 3:30:47 PM oracle.net.ns.Packet receive
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 1, [I@1315d34, 20
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 1, 871, [I@1315d34, 20, oracle-character-set-830, oracle-character-set-2000, oracle-character-set-871, false
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 1, [I@1315d34, true, 20
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: return: 4
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: return: 4
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: return: 4
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 211, [I@1de256f, 10
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 211, 871, [I@1de256f, 10, oracle-character-set-830, oracle-character-set-2000, oracle-character-set-871, false
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 211, [I@1de256f, true, 10
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: return: 3
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: return: 3
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: return: 3
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 321, [I@16bd8ea, 2000
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 321, 871, [I@16bd8ea, 2000, oracle-character-set-830, oracle-character-set-2000, oracle-character-set-871, false
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Enter: [B@1fa1bb6, 0, [C@1b000e7, 321, [I@16bd8ea, true, 2000
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: return: 5
    Jul 1, 2010 3:30:47 PM oracle.sql.CharacterSet convertUTFBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: return: 5
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion _CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: return: 5
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.DBConversion CHARBytesToJavaChars
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CConnection updateSessionProperties
    TRACE_16: Enter: [Loracle.jdbc.internal.KeywordValue;@16e1fb1
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CConnection updateSessionProperties
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CStatement fetch
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement checkValidRowsStatus
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement checkValidRowsStatus
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl <init>
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CResultSetAccessor getCursor
    TRACE_16: return: oracle.jdbc.driver.OracleResultSetImpl@e2cb55
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CResultSetAccessor getCursor
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.ResultSetAccessor getObject
    TRACE_16: return: oracle.jdbc.driver.OracleResultSetImpl@e2cb55
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.ResultSetAccessor getObject
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleCallableStatement getObject
    TRACE_1: return: oracle.jdbc.driver.OracleResultSetImpl@e2cb55
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleCallableStatement getObject
    TRACE_1: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleCallableStatementWrapper getObject
    TRACE_30: return: oracle.jdbc.driver.OracleResultSetImpl@e2cb55
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleCallableStatementWrapper getObject
    TRACE_30: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_20: Debug: closed=false, statement.currentRow=-1, statement.totalRowsVisited=0, statement.maxRows=0, statement.validRows=1, statement.gotLastBatch=true
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: return: true
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_20: Debug: closed=false, statement.currentRow=0, statement.totalRowsVisited=1, statement.maxRows=0, statement.validRows=1, statement.gotLastBatch=true
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Enter: false
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BaseResultSet close
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BaseResultSet close
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection registerHeartbeat
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection registerHeartbeat
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection needLine
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection needLineUnchecked
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection needLineUnchecked
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection needLine
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CStatement closeQuery
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CConnection assertLoggedOn
    TRACE_16: Enter: "oracle.jdbc.driver.T4CStatement.closeQuery"
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CConnection assertLoggedOn
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CStatement closeQuery
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement endOfResultSet
    TRACE_16: Enter: false
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement prepareForNewResults
    TRACE_16: Enter: false, false
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement clearWarnings
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement clearWarnings
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Enter: true
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: return:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement prepareForNewResults
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CStatement clearDefines
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement clearDefines
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement freeLine
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement freeLine
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement cleanupDefines
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Enter: [B@8e32e7
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BufferCache put
    TRACE_16: Enter: [B@8e32e7
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BufferCache put
    TRACE_30: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Enter: [C@1b000e7
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BufferCache put
    TRACE_16: Enter: [C@1b000e7
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.BufferCache put
    TRACE_30: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement cleanupDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement clearDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.T4CStatement clearDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement endOfResultSet
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: return: false
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: Exit
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleCallableStatementWrapper close
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OraclePreparedStatementWrapper close
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatementWrapper close
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement close
    TRACE_1: Public Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.OracleStatement closeOrCache
    TRACE_16: Enter: null
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection isStatementCacheInitialized
    TRACE_16: Enter:
    Jul 1, 2010 3:30:47 PM oracle.jdbc.driver.PhysicalConnection isStatementCacheInitialized
    4. ODBC trace out when returned the correct result set (ie success scenario)
    ===============================================
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.net.ns.Packet receive
    TRACE_20: Debug: type=6, length=82, flags=0
    00 52 00 00 06 00 00 00    |.R......|
    00 00 08 01 06 00 00 01    |........|
    02 00 00 00 00 00 00 04    |........|
    01 05 00 02 05 7B 00 00    |.....{..|
    01 02 00 03 00 00 00 00    |........|
    00 00 00 00 00 00 00 00    |........|
    00 00 01 01 00 00 00 00    |........|
    19 4F 52 41 2D 30 31 34    |.ORA-014|
    30 33 3A 20 6E 6F 20 64    |03:.no.d|
    61 74 61 20 66 6F 75 6E    |ata.foun|
    64 0A                      |d.      |
    Jul 1, 2010 3:30:07 PM oracle.net.ns.Packet receive
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CConnection updateSessionProperties
    TRACE_16: Enter: [Loracle.jdbc.internal.KeywordValue;@1fa1bb6
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CConnection updateSessionProperties
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CStatement fetch
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Enter: false
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BaseResultSet close
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BaseResultSet close
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection registerHeartbeat
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection registerHeartbeat
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection needLine
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection needLineUnchecked
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection needLineUnchecked
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection needLine
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CStatement closeQuery
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CConnection assertLoggedOn
    TRACE_16: Enter: "oracle.jdbc.driver.T4CStatement.closeQuery"
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CConnection assertLoggedOn
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CStatement closeQuery
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement endOfResultSet
    TRACE_16: Enter: false
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement prepareForNewResults
    TRACE_16: Enter: false, false
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement clearWarnings
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement clearWarnings
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement prepareForNewResults
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CStatement clearDefines
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement clearDefines
    TRACE_16: Public Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement freeLine
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement freeLine
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement cleanupDefines
    TRACE_16: Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Enter: [B@8e32e7
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BufferCache put
    TRACE_16: Enter: [B@8e32e7
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BufferCache put
    TRACE_30: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Enter: [C@1b000e7
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BufferCache put
    TRACE_16: Enter: [C@1b000e7
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.BufferCache put
    TRACE_30: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.PhysicalConnection cacheBuffer
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement cleanupDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement clearDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CStatement clearDefines
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleStatement endOfResultSet
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl internal_close
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl <init>
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CResultSetAccessor getCursor
    TRACE_16: return: oracle.jdbc.driver.OracleResultSetImpl@1315d34
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.T4CResultSetAccessor getCursor
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.ResultSetAccessor getObject
    TRACE_16: return: oracle.jdbc.driver.OracleResultSetImpl@1315d34
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.ResultSetAccessor getObject
    TRACE_16: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleCallableStatement getObject
    TRACE_1: return: oracle.jdbc.driver.OracleResultSetImpl@1315d34
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleCallableStatement getObject
    TRACE_1: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleCallableStatementWrapper getObject
    TRACE_30: return: oracle.jdbc.driver.OracleResultSetImpl@1315d34
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleCallableStatementWrapper getObject
    TRACE_30: Exit
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_1: Public Enter:
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl next
    TRACE_20: Debug: closed=true, statement.currentRow=-1, statement.totalRowsVisited=0, statement.maxRows=0, statement.validRows=0, statement.gotLastBatch=false
    Jul 1, 2010 3:30:07 PM oracle.jdbc.driver.OracleResultSetImpl next
    Edited by: user9376621 on Jul 1, 2010 1:07 AM
    Edited by: user9376621 on Jul 1, 2010 1:13 AM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

    Please ignore this, it was a non-issue in the end.

  • How to get a stored function return value (which is not a cursor)?

    I want to do so with ADO inside Visual Basic. I know how to call a stored procedure, but nothing I tried could help me in calling a stored function and getting its return code. Note that the function has no cursors within its argument or return code.
    Your quick response would be appreciated
    Eyal

    Eyal,
    A stored function returns a value. You need to have the first parameter (of correct data type) for the returned value. The parameter binding is pretty much the same as you would do with stored procedures.
    e.g. "begin :1= proc(....); end;"
    Sinclair

  • Get the result of a function in Oracle

    I'm using a JSP that call a stored function in Oracle, but I don't know how to get return of the function.
    Thanks.

    You can call the function via a sql query like:
    SELECT myFunc() FROM DUALThen execute that sql into a ResultSet and use the getString or getInt or whatever method fits your function return type.
    John H.

  • Getting a ResultSet from a stored function

    Hi everybody.
    I don't know if it's possible but i would like call a stored function with JDBC, and that function returns not a single value (like a VARCHAR2 or a NUMBER) but the "equivallent of a Java ResultSet".
    With JDBC, i can execute a query like "SELECT * FROM Emp" and fetch a set of row in a ResultSet.
    Instead of preparing and executing a SQL query from my Java source, i would preferred calling a stored function.
    But i don't know which data type my function should return.
    I would like to know if such a thing is possible.
    Maybe somebody have an sample source code ...
    Thanks.

    You can get values OUT of the procedure by (lines with registerOutParameter):
    cstmt = conn.prepareCall("{call hrx_get_empl_benefit_cost(?,?,?,?,?,?,?)}");
    cstmt.setInt(1,employee.getId());
    cstmt.setInt(2,plan.getId());
    cstmt.setString(3,cvgAmtOrLevel);
    cstmt.setString(4,effDate);
    cstmt.registerOutParameter(5,Types.VARCHAR);
    cstmt.registerOutParameter(6,Types.VARCHAR);
    cstmt.registerOutParameter(7,Types.VARCHAR);
    cstmt.execute();
    I do not think it returns a resultSet like you are thinking. I guess you are talking about getting values out and not a cursor of records or several records of values.

  • Calling Stored Function from TopLink

    I have a simple Stored Function that I'm trying to call using TopLink API:
    TopLink Version: 10.1.3.3.
    Oracle JDBC Driver: ojdbc5.jar (Oracle JDBC Driver version - "11.1.0.6.0-Production+")
    Stored Procedure:
    Function Get_Email_Address_Id(P_EMAIL_ADDRESS IN varchar2) return number;
    TopLink Code:
    public String executeStoredFunction() {
    TopLinkTemplate tlTemplate = getTopLinkTemplate();
    StoredFunctionCall call = new StoredFunctionCall();
    call.setProcedureName("EMAIL_ADDRESS_PKG.Get_Email_Address_Id");
    call.setResult("FUNCTION_RESULT", String.class);
    call.addNamedArgument("P_EMAIL_ADDRESS");
    ValueReadQuery query = new ValueReadQuery();
    query.setCall(call);
    query.addArgument("P_EMAIL_ADDRESS");
    Vector parameters = new Vector();
    parameters.addElement("1009");
    String result = (String)tlTemplate.executeQuery(query, parameters.toArray());
    return result;
    Error I'm getting:
    Exception [TOPLINK-7121] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070428)): oracle.toplink.exceptions.ValidationException
    Exception Description: DatabasePlatform does not support stored functions
         at oracle.toplink.exceptions.ValidationException.platformDoesNotSupportStoredFunctions(ValidationException.java:1299)
         at oracle.toplink.queryframework.StoredFunctionCall.prepareInternal(StoredFunctionCall.java:52)
         at oracle.toplink.internal.databaseaccess.DatabaseCall.prepare(DatabaseCall.java:494)
         at oracle.toplink.internal.queryframework.CallQueryMechanism.prepareCall(CallQueryMechanism.java:102)
         at oracle.toplink.internal.queryframework.CallQueryMechanism.prepareExecuteSelect(CallQueryMechanism.java:203)
         at oracle.toplink.queryframework.DataReadQuery.prepare(DataReadQuery.java:150)
         at oracle.toplink.queryframework.DatabaseQuery.checkPrepare(DatabaseQuery.java:405)
         at oracle.toplink.queryframework.DatabaseQuery.checkPrepare(DatabaseQuery.java:375)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:598)
         at oracle.toplink.queryframework.DataReadQuery.execute(DataReadQuery.java:96)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:965)
    Observations:
    Why is TopLink complaining about DatabasePlatform?
    I'm using Oracle 10g as my database platform. Did anyone encounter this problem?
    I have tried various combinations but it always have same complaint.
    Thanks in advance for help.

    Hello,
    It is complaining because the DatabasePlatform being used doesn't support functions. So the problem is that it is using the DatabasePlatform instead of the Oracle10Platform that you are expecting. How have you defined it? Could you have multiple sessions.xml files, and the one that is being picked not define the Oracle10Platform? Or could you be overriding the login somehow (prelogin event etc) and setting it to use the default DatabasePlatform by accident?
    Best Regards,
    Chris

  • Cannot call ANY stored functions from my Java program

    My problem is that I cannot call ANY stored procedure from my Java
    program. Here is the code for one of my stored procedures which runs
    very well in PL/SQL:
    PL/SQL code:
    CREATE OR REPLACE PACKAGE types AS
    TYPE cursorType IS REF CURSOR;
    END;
    CREATE OR REPLACE FUNCTION list_recs (id IN NUMBER)
    RETURN types.cursorType IS tracks_cursor types.cursorType;
    BEGIN
    OPEN tracks_cursor FOR
    SELECT * FROM accounts1
    WHERE id = row_number;
    RETURN tracks_cursor;
    END;
    variable c refcursor
    exec :c := list_recs(11)
    SQL> print c
    COLUMN1 A1 ROW_NUMBER
    rec_11 jacob 11
    rec_12 jacob 11
    rec_13 jacob 11
    rec_14 jacob 11
    rec_15 jacob 11
    Here is my Java code:
    import java.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*;
    class list_recs
    public static void main(String args[]) throws SQLException,
    IOException
    String query;
    CallableStatement cstmt = null;
    ResultSet cursor;
    // input parameters for the stored function
    String user_name = "jacob";
    // user name and password
    String user = "jnikom";
    String pass = "jnikom";
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    try { Class.forName ("oracle.jdbc.driver.OracleDriver"); }
    catch (ClassNotFoundException e)
    { System.out.println("Could not load driver"); }
    Connection conn =
    DriverManager.getConnection (
    "jdbc:oracle:thin:@10.52.0.25:1521:bosdev",user,pass);
    try
    String sql = "{ ? = call list_recs(?) }";
    cstmt = conn.prepareCall(sql);
    // Use OracleTypes.CURSOR as the OUT parameter type
    cstmt.registerOutParameter(1, OracleTypes.CURSOR);
    String id = "11";
    cstmt.setInt(2, Integer.parseInt(id));
    // Execute the function and get the return object from the call
    cstmt.executeQuery();
    ResultSet rset = (ResultSet) cstmt.getObject(1);
    while (rset.next())
    System.out.print(rset.getString(1) + " ");
    System.out.print(rset.getString(2) + " ");
    System.out.println(rset.getString(3) + " ");
    catch (SQLException e)
    System.out.println("Could not call stored function");
    e.printStackTrace();
    return;
    finally
    cstmt.close();
    conn.close();
    System.out.println("Stored function was called");
    Here is how I run it, using Win2K and Oracle9 on Solaris:
    C:\Jacob\Work\Java\Test\Vaultus\Oracle9i\FunctionReturnsResultset>java
    list_recs
    Could not call stored function
    java.sql.SQLException: ORA-00600: internal error code, arguments:
    [ttcgcshnd-1], [0], [], [], [], [], [], []
    at
    oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
    at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
    at
    oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:490)
    at
    oracle.jdbc.driver.OracleStatement.getCursorValue(OracleStatement.java:2661)
    at
    oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4189)
    at
    oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4123)
    at
    oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:541)
    at list_recs.main(list_recs.java:42)
    C:\Jacob\Work\Java\Test\Vaultus\Oracle9i\FunctionReturnsResultset>
    Any help is greatly appreciated,
    Jacob Nikom

    Thank you for your suggestion.
    I tried it, but got the same result. I think the difference in the syntax is due to the Oracle versus SQL92 standard
    conformance. Your statament is the Oracle version and mine is the SQL92. I think both statements are acceptable
    by the Oracle.
    Regards,
    Jacob Nikom

  • Why returning string from java stored function failed ?  HELP ME, PLEASE

    Hi everybody,
    I created java stored function: it's doing http post, parsing xml from http reply, and returning string result.
    Sometimes, it doesn't return any value. What can be a reason ?
    The high level procedure, has following form:
    class SBE {
    public static String call(String arg0) {
    SBE sbe=new SBE("d:\\oracle\\ora81\\network\\log\\SBE.log");
    String result=SBEParser.go(sbe.sendRequest(arg0, ""), sbe.logger);
    sbe.logger.log(result);
    sbe.logger.log("Finish SBE intetraction");
    return result;
    PLSQL wrapper has a simple form:
    create or replace package PG_SBE as
    function CALL(arg0 in varchar2) return varchar2;
    end;
    create or replace package body PG_SBE as
    function CALL(arg0 varchar2) return varchar2 as language java name 'SBE.call(java.lang.String) return java.lang.String';
    end;
    In log file ("d:\\oracle\\ora81\\network\\log\\SBE.log"), I can find message :
    "Finish SBE intetraction"
    but query:
    select pg_sbe.call("any argument") from dual;
    doesn't finish.
    What can be a reason ? What can I do to trace stage of convertion java string to varchar ?
    Please help me...
    Best regards
    Marek

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Stefan Fdgersten ([email protected]):
    Maybe your call is wrong... Shouldn't there be a "?" instead of "1"?
    Your code:
    String myquery = "begin :1 := jspTest; end;";
    I provide my (working) call from java as an example. Maybe it is of any help... :)
    import java.sql.*;
    import oracle.jdbc.driver.*;
    public Vector getAllHosts() throws SQLException {
    //return getHosts(false, -1);
    Connection conn = null;
    CallableStatement cs = null;
    Vector hostV = new Vector();
    try {
    conn = getConnection();
    String query = "{ ? = call curTestPkg.curTestFunc}";
    cs = conn.prepareCall(query);
    cs.registerOutParameter(1, OracleTypes.CURSOR);
    cs.execute();
    ResultSet rs = ((OracleCallableStatement)cs).getCursor(1);
    while (rs.next()) {
    Host host = new Host(
    rs.getInt("hostid")
    , rs.getString("name")
    , rs.getString("descr")
    , rs.getString("os"));
    hostV.add(host);
    cs.close();
    return hostV;
    } finally {
    close(conn, cs);
    <HR></BLOCKQUOTE>
    hi Stefan thanx.....even after changing the call statement i get the same error. i changed query string as...
    String myquery = "{ ? = call jspTest}";
    CallableStatement cst = con.prepareCall(myquery);
    Can u please check out my call sepc that i have written in pl/sql and plz let me know it there is any error in that.
    PS : THIS IS THE FIRST TIME I AM WORKING WITH PL/SQL AND IT IS URGENT

  • Why returning string from java stored function failed ?

    I created java stored function: it's doing http post, parsing xml from http reply, and returning string result.
    Sometimes, it doesn't return any value. What can be a reason ?
    The high level procedure, has following form:
    class SBE {
    public static String call(String arg0) {
    SBE sbe=new SBE("d:\\oracle\\ora81\\network\\log\\SBE.log");
    String result=SBEParser.go(sbe.sendRequest(arg0, ""), sbe.logger);
    sbe.logger.log(result);
    sbe.logger.log("Finish SBE intetraction");
    return result;
    PLSQL wrapper has a simple form:
    create or replace package PG_SBE as
    function CALL(arg0 in varchar2) return varchar2;
    end;
    create or replace package body PG_SBE as
    function CALL(arg0 varchar2) return varchar2 as language java name 'SBE.call(java.lang.String) return java.lang.String';
    end;
    In log file ("d:\\oracle\\ora81\\network\\log\\SBE.log"), I can find message :
    "Finish SBE intetraction"
    but query:
    select pg_sbe.call("any argument") from dual;
    doesn't finish.
    What can be a reason ? What can I do to trace stage of convertion java string to varchar ?
    Please help me...
    Marek

    This comes up periodically. It just isn't possible using that type of approach. Probably the best you could do is the create an ADT (containing collections) and use that to pass a 'batch' of information.
    Hopefully this will get addressed in the next release of the database.

  • View + stored function + synonym for other user

    Dear All!
    I've got a quite strange problem which I cannot decide whether it's caused by my lack of knowledge on the appropriate topic or by an Oracle bug. I'm already after some heavy googling on the topic and I was unable to track any valuable answers neither in forums nor in the Oracle documentation. I'll try to be as short and specific as possible.
    Database: Oracle 10g
    Result of "SELECT BANNER FROM V$VERSION":
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    "CORE     10.2.0.4.0     Production"
    TNS for Solaris: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    I have two users in the database for a single Web application: UAPP01, which is the owner of application DB objects and UAPP02 which is the application user connecting to the DB. The application runs for quite many years by now and DB structure layout has always been following a simple logic: for each DB object used by the app. (tables, views, packages and stored procedures/functions) and found in the UAPP01 there exists a synonym in the UAPP02 schema. For the privileges to be set correctly a role is created: RL_MY_APPL which is granted the necessary privileges on objects of UAPP01 (CRUD on tables, SELECT on views, EXECUTE on procedures, etc..). This role is granted to UAPP02.
    In the previous days I was about to extend the DB with a view that invokes a stored function. This pattern has already occured in the DB previously so I kept following existing conventions: I've created the stored function and the view in the UAPP01 schema, granted SELECT on the view to RL_MY_APPL and created the synonym for it in the UAPP02 schema. This is where the entire functionality began to act strange. I'll try to explain with a simplified example that was sufficient to reproduce the problem:
    REM ========================================
    REM Execute below code as UAPP01 user.
    REM ========================================
    REM Test function.
    CREATE OR REPLACE FUNCTION testfunction(p_param NUMBER) RETURN NUMBER IS
    BEGIN
    RETURN p_param *2;
    END;
    REM Testview version 1. causing trouble.
    CREATE OR REPLACE VIEW testview AS
    WITH testdata AS
    SELECT /*+ materialize*/ LEVEL AS d
    FROM dual CONNECT BY LEVEL <= 100
    SELECT a, b, c, SUM(d) AS sum_d
    FROM
    SELECT FLOOR(dbms_random.VALUE(1, 100)) a, FLOOR(dbms_random.VALUE(1, 100)) b, FLOOR(dbms_random.VALUE(1, 100)) c, testfunction(d) AS d
    FROM testdata
    GROUP BY CUBE(a, b, c)
    REM Testview version 2. not causing trouble.
    CREATE OR REPLACE VIEW testview AS
    SELECT a, b, c, SUM(d) AS sum_d
    FROM
    SELECT FLOOR(dbms_random.VALUE(1, 100)) a, FLOOR(dbms_random.VALUE(1, 100)) b, FLOOR(dbms_random.VALUE(1, 100)) c, testfunction(d) AS d
    FROM
    SELECT LEVEL AS d FROM dual CONNECT BY LEVEL <= 100
    GROUP BY (a, b, c)
    REM Synonym.
    CREATE OR REPLACE SYNONYM UAPP02.testview FOR UAPP01.testview;
    REM Grants.
    GRANT SELECT ON testview TO RL_MY_APPL;
    When creating TESTVIEW with the 1 ^st^ version I cannot query it using the UAPP02 user, I'm constantly getting the error: ORA-00904: : invalid identifier. However, when I use the 2 ^nd^ version everything runs perfectly. What is common in the two cases is that both versions use the TESTFUNCTION function. I have not granted the EXECUTE rights on TESTFUNCTION to the RL_MY_APPL since it was never needed previously (for other views using stored functions) and as far as I know it's not necessary (as both the view and the function are owned by UAPP01). The strange thing in the above behaviour is that the function is used by both versions, however only one of them fails. This is where I thought it's not a granting issue, otherwise neither of the versions would have worked and I think I would have received a different error stating that UAPP02 lacks the necessary privileges on underlying objects of the view.
    As I further digged into the problem by examining the EXPLAIN PLAN output for the two versions I found that version 1. leads to a TEMP TABLE TRANSFORMATION and to MULTI TABLE INSERTs, whereas version 2. simply executes the query without doing such things. In my setup I presume the MULTI TABLE INSERTs were caused by the GROUP BY CUBE. When I simply removed the CUBE and used only GROUP BY the TEMP TABLE TRANSFORMATION remained in place but the MULTI TABLE INSERTs disappeared. As a result of this small modification the view again began to work when I executed it through the synonym and using the UAPP02 user.
    With the original DB objects of our application the behaviour is even more strange: the error comes up if I select from the view and filter for a column that is grouped in the query whereas it works correctly if I filter for the aggregated columns. However, I couldn't reproduce this with the above simplified example.
    No problem occurs with any of the versions if I query the view using the UAPP01 user.
    This hectic behaviour made me suspect that the TEMP TABLE TRANSFORMATION + MULTI TABLE INSERT + synonym + stored function combo appears to bring a strange Oracle bug to the surface...
    As a final note: when executing GRANT EXECUTE ON TESTFUNCTION TO RL_MY_APPL everything works fine in all cases. I know I could simply live with this but I'd really like to get to the bottom of this. Although this extra GRANT appears to solve the problem I don't really trust it. I'd really like to avoid the bug emerging again in Production in case this extra GRANT were not sufficient due to some unknown misteries.
    Excuse me, the post has become a bit lengthy. Thanks in advance for anyone who's willing to read through and answer it!
    Regards,
    Krisztian Balazs Szaniszlo

    The error is thrown at run-time and only for the UAPP02 (second) user.
    The problem is that the appearance of errors is independent of whether the query contains the call to the stored function or not.
    So far I thought that if I use a stored function indirectly, like in this setup: UAPP02.synonym -> UAPP01.view -> UAPP01.stored function, then I don't need the grant. Of course, I understand that if I had used it directly, like :UAPP02.synonym -> UAPP01.stored function then I'd need the GRANT EXECUTE.
    Shall I just ignore the strange behaviour and go on by adding GRANT EXECUTE privilege on all the functions used indirectly through views? It seems to solve the problem, but this behaviour is disturbing me quite and I fear the real root cause of the problem can emerge later in a different fashion.

  • Difference between Stored Procedure & Stored Function

    I want to know the difference between Procedure Procedure & Stored Function in compiler in oracle 10g.
    Thanks in advance

    I've been guilty of doing that myself but you can put a when others exception in a procedure also :-)
    You can have an issue in forms triggers where it throws an exception for no known reason and the only way to throttle it is to have the everything exception. I think there is a bug in there that is exposed under some circumstances and everyone has run into it, that's my theory.  You're definitely right that having the everything exception in the code leads to impossible to debug problems. I think we could use some error handling enhancements.
    I'd like to see an all-purpose error function in forms. Instead of the customer having to program to catch all the various kinds of errors that can occur, plsql, database, forms, .... I'd like to be able to configure the form to have a built in error handling system show the error with an option to programatically handle the error unseen. The forms thing that it shows errors on the bottom of the screen does not work at all in my experience where we deploy forms. Windows by default has large icons and they cover up the error area. Even if you get the user to change the icons to small the users never see those messages. And they will not display errors in forms via the help menu either. (help,display error). I would like to be able to filter error messages, translate error messages with some kind of translation table (make user understandable), and have them pop up on the screen in a window.
    I think some of the database functions that are "error-happy" should be provided in additional constructs. It is a design decision to have this throw an exception when the record doesn't exist:
    select mycolumn into myfield from sometable where mykey = 'X';
    I think many of us would prefer to have it simply not throw an exception if the record doesn't exist, so we don't have to remember what on earth the exception was called,  and test the results of myfield and/or a status field.
    How else to do this? How about this?:
    minselect mycolumn into myfield, mystatus from sometable where mykey = 'X';
    Here we define a new form of select called minselect that is reluctant to throw exceptions, but puts a status code in
    the status field should someone have to know the difference of whether myfield was null in an existing record or if there was no qualifying record.
    What's with the minselect? Well we would have a minselect and a maxselect that would find ONE qualifying record, the min or the max to get around that exception problem #2, select returning multiple values. (We would have the status reflect the fact there were multiple values.)

Maybe you are looking for