Calling PL/SQL function from external Java class

I was wondering if I was able to call a pl/sql function from an external java class? If so, would you be able to tell me briefly on how to go about it. I know I can call java methods that are internally stored in the db from pl/sql, but I was hoping I could call pl/sql from external java. Thanks,
Kelly

Ok, I made the changes, but I'm now getting the following error:
Error code = 1403
Error message = ORA-01403: no data found
ORA-06512: at "IOBOARD.GETSTATUS", line 6
ORA-06512: at line 1
The ora-01403 I don't understand because there is data for the name Kelly.Brace.
ora-06512 error: at string line string.
Here's what the code looks like after I made the changes:
String sql = "{?=call ioboard.GetStatus(?)}";
      // create a Statement object
      myStatement = myConnection.prepareCall( sql );
      myStatement.setString( 1, "Kelly.Brace" );
      myStatement.registerOutParameter(2, java.sql.Types.LONGVARCHAR );
      // create a ResultSet object, and populate it with the
      // result of a SELECT statement
      ResultSet myResultSet = myStatement.executeQuery();
      // retrieve the row from the ResultSet using the
      // next() method
      myResultSet.next();
      // retrieve the user from the row in the ResultSet using the
      // getString() method
      String status = myResultSet.getString(1);
      System.out.println("Hello Kelly, your status is: " + status);
      // close this ResultSet object using the close() method
      myResultSet.close();Here's what the function looks like:
CREATE OR REPLACE FUNCTION GetStatus( user_name in varchar2)
RETURN VARCHAR2
is
v_status varchar2(10);
BEGIN
select iob_location into v_status
from ioboard.iob_user
where iob_username = user_name;
  RETURN( v_status);
END;This works perfectly in the SQL Window:
select iob_location
from ioboard.iob_user
where iob_username = 'Kelly.Brace';

Similar Messages

  • Calling pl/sql procedure from a java class.

    I have an onSubmit event that needs to call a pl/sql procedure using the named connection. Can anyone tell me how this is code in a Model 1 ADF JSP page?

    Look at the following related thread:
    Programatically setting attribute values.

  • How to call a SQL function from an XSL expression

    Hi
    In R12, in Payroll Deposit adivce/Check writer, We need to sort the earnings tag <AC_Earnings> in to two different categories as regular and other earnings. In the DB and form level of element defintiion we have a DFF which differentiates between the two kinds of earnings. But the seeded XML that is gerneated by the check writer does not have this field.
    The seeded template displays all the earnings in one column. How can we achieve this in the template without modifying the seeded XML.
    The one approach i have is to write a function and based on the return value sort the data. For this I need to know :
    1) How to call a SQL function from an XSL expression that is allowed in BI template.
    If anyone ahs faced similar requirements please share your approach.
    Thanks
    Srimathi

    Thank u..
    but i'd seen that link wen i searched in google..
    Is it possible without using any 3rd party JARs and all?
    and more importantly plz tell me what should be preferred way to call a javascript function?
    Do it using addLoadEvent() or Windows.Load etc
    OR
    Call it thru Xsl? (I donno how to do dis)
    Thanks in Advance..
    Edited by: ranjjose on Jun 3, 2008 8:21 AM

  • How to call pl/sql function from element values

    EBS 11.5.10.2
    XMLP 5.6.3
    Hello,
    I noticed that the output of the rdf-to-data template conversion process makes use of an undocumented feature of data templates, and I would like to get input from experts as to which situations this feature is usable.
    The closest thing I can find in the documentation is a sample in the user guide. There is a "General Ledger Journals Data Template Example" that has a <dataStructure> section that contains <element> nodes which are NOT children of a <group> node. I can't find any explanation of this in the user guide.
    I've noticed from converted templates that in these un-grouped elements you can make calls to PL/SQL functions in the "value" attribute, like this:
    <dataStructure>
      <group name="G_LINES" source="Q_MAIN">
        <element name="Line_Num"           value="Line_Num"/>
      </group>
      <element name="C_CALCULATED_VALUE" dataType="number" value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
    </dataStructure>Has anyone had any success being able to call PL/SQL functions from grouped elements? Whenever I try, it doesn't seem to work.
    When I try something like this:
    <dataStructure>
      <group name="G_LINES" source="Q_MAIN">
        <element name="Line_Num"           value="Line_Num"/>
        <element name="some_calculation"   value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
        <element name="some_calculation_b" value="XX_CUSTOMPROCS.SOME_FUNCTION_B(:Line_Num)"/>
      </group>
      <element name="C_CALCULATED_VALUE" dataType="number" value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
    </dataStructure>The <SOME_CALCULATION/> and <SOME_CALCULATION_B/> nodes come out empty in the output data xml file, but <C_CALCULATED_VALUE> would have a value as desired.

    ah - perfect. That makes sense. Thank you for the response!
    But what about when we need to pass parameters to those functions whos values are the results of aggregate element values?
    This happens a lot in the converted data templates, where pl/sql package functions are meant to replace formula columns from the original Oracle Report. Take this example from the conversion of ARXAGMW.rdf (Aging Report, 7 Buckets):
    (note the function call in the value of "Set_Percent_Inv_Inv" is using aggregate results from subgroups)
      <group name="G_INV_INV" dataType="varchar2" source="Q_Invoice">
        <element name="Total_Inv_Inv_Amt" function="sum" dataType="number" value="G_Invoice.C_Amt_Due_Rem_Inv"/>
        <element name="Total_Inv_Inv_B0" function="sum" dataType="number" value="G_Invoice.C_Inv_B0"/>
        <element name="Total_Inv_Inv_B1" function="sum" dataType="number" value="G_Invoice.C_Inv_B1"/>
        <element name="Total_Inv_Inv_B2" function="sum" dataType="number" value="G_Invoice.C_Inv_B2"/>
        <element name="Total_Inv_Inv_B3" function="sum" dataType="number" value="G_Invoice.C_Inv_B3"/>
        <element name="Total_Inv_Inv_B4" function="sum" dataType="number" value="G_Invoice.C_Inv_B4"/>
        <element name="Total_Inv_Inv_B5" function="sum" dataType="number" value="G_Invoice.C_Inv_B5"/>
        <element name="Total_Inv_Inv_B6" function="sum" dataType="number" value="G_Invoice.C_Inv_B6"/>
        <element name="Set_Percent_Inv_Inv"  dataType="number"  value="XX_CUSTOMPROCS.XXC_ARXAGMW.set_percent_inv_invformula(:Total_Inv_Inv_Amt, :Total_Inv_Inv_B0, :Total_Inv_Inv_B1, :Total_Inv_Inv_B2, :Total_Inv_Inv_B3, :Total_Inv_Inv_B4, :Total_Inv_Inv_B5, :Total_Inv_Inv_B6)"/>
        <element name="Sum_Percent_B0_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B0_Inv_p"/>
        <element name="Sum_Percent_B1_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B1_Inv_p"/>
        <element name="Sum_Percent_B2_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B2_Inv_p"/>
        <element name="Sum_Percent_B3_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B3_Inv_p"/>
        <element name="Sum_Percent_B4_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B4_Inv_p"/>
        <element name="Sum_Percent_B5_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B5_Inv_p"/>
        <element name="Sum_Percent_B6_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B6_Inv_p"/>
        <group name="G_Cust_Inv" dataType="varchar2" source="Q_Invoice">
          <group name="G_Site_Inv" dataType="varchar2" source="Q_Invoice">
            <group name="G_1" dataType="varchar2" source="Q_Invoice">
              <group name="G_Invoice" dataType="varchar2" source="Q_Invoice">
                <element name="C_Amt_Due_Rem_Inv" dataType="number" value="C_Amt_Due_Rem_Inv"/>
                <element name="C_Inv_B0" dataType="number" value="C_Inv_B0"/>
                <element name="C_Inv_B1" dataType="number" value="C_Inv_B1"/>
                <element name="C_Inv_B2" dataType="number" value="C_Inv_B2"/>
                <element name="C_Inv_B3" dataType="number" value="C_Inv_B3"/>
                <element name="C_Inv_B4" dataType="number" value="C_Inv_B4"/>
                <element name="C_Inv_B5" dataType="number" value="C_Inv_B5"/>
                <element name="C_Inv_B6" dataType="number" value="C_Inv_B6"/>
              </group>
            </group>
          </group>
        </group>
      </group>
      ...All of these groups and sub-groups are based on one single query, so I am not sure how I would move the function call into the query without changing the results of the function.
    In the example above, elements Sum_Percent_B0_Inv through Sum_Percent_B6_Inv grab the results of the calculation done in set_percent_inv_invformula. Here is the essence of that function:
      sum_percent_b0_inv := ROUND ((total_inv_inv_b0 / total_inv_inv_amt) * 100, 2);
      sum_percent_b1_inv := ROUND ((total_inv_inv_b1 / total_inv_inv_amt) * 100, 2);
      sum_percent_b2_inv := ROUND ((total_inv_inv_b2 / total_inv_inv_amt) * 100, 2);
      sum_percent_b3_inv := ROUND ((total_inv_inv_b3 / total_inv_inv_amt) * 100, 2);
      sum_percent_b4_inv := ROUND ((total_inv_inv_b4 / total_inv_inv_amt) * 100, 2);
      sum_percent_b5_inv := ROUND ((total_inv_inv_b5 / total_inv_inv_amt) * 100, 2);
      sum_percent_b6_inv := ROUND ((total_inv_inv_b6 / total_inv_inv_amt) * 100, 2);The only solution I can think of is to have separate queries, one for each subgroup, that do the "sum" in sql; but that seems terribly inefficient.

  • How to call a PL/SQL procedure from a Java class?

    Hi,
    I am new to the E-BusinessSuite and I want to develop a Portal with Java Portlets which display and write data from some E-Business databases (e.g. Customer Relationship Management or Human Resource). These data have been defined in the TCA (Trading Community Architecture) data model. I can access this data with PL/SQL API's. The next problem is how to get the data in the Java class. So, how do you call a PL/SQL procedure from a Java program?
    Can anyone let me know how to solve that problem?
    Thanks in advance,
    Chang Si Chou

    Have a look at this example:
    final ApplicationModule am = panelBinding.getApplicationModule();
    try
         final CallableStatement stmt = ((DBTransaction)am.getTransaction()).
                                                                                         createCallableStatement("{? = call some_pck.some_function(?, ?)}", 10);
         stmt.registerOutParameter(1, OracleTypes.VARCHAR);
         stmt.setInt(2, ((oracle.jbo.domain.Number)key.getAttribute(0)).intValue());
         stmt.setString(3, "Test");
         stmt.execute();
         stmt.close();
         return stmt.getString(1);
    catch (Exception ex)
         panelBinding.reportException(ex);
         return null;
    }Hope This Helps

  • Error PLS-00306 during calling PL/SQL function from Java

    Hi all,
    I am facing a problem during call of oracle PL/SQL function from java using CallableStatement.
    I receive following error message.
    java.sql.SQLException: ORA-06550: line 1, column 13:
    PLS-00306: wrong number or types of arguments in call to 'EXPORT_HIST_ALARMS_FUNC'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    As per above error EXPORT_HIST_ALARMS_FUNC in oracle has this signature.
    CREATE OR REPLACE FUNCTION EXPORT_HIST_ALARMS_FUNC(startDateTime VARCHAR2, endDateTime VARCHAR2, meType VARCHAR2) RETURN VARCHAR2 IS
    END EXPORT_HIST_ALARMS_FUNC;
    Above function I have called following way in java.
    String sql = "begin ?:= EXPORT_HIST_ALARMS_FUNC(?, ?, ?); end;" ;
    CallableStatement cStatement = null;
    cStatement = connection.prepareCall(sql);
    cStatement.registerOutParameter(1,Types.VARCHAR);
    cStatement.setString(2,startDateTime);
    cStatement.setString(3,endDateTime);
    cStatement.setString(4,meType);
    cStatement.execute();
    msg = cStatement.getString(1);
    Actually above function requires three input parameters and one return parameter.
    During execution of above java code it throws SQLException and shows PLS-00306: wrong number or types of arguments in call to 'EXPORT_HIST_ALARMS_FUNC' error.
    I have run this function directly from oracle with three parameters and run successfully and finally it returns string.
    But I am unable to figure out why it doesn't run from above java code.
    Please help regarding this.
    Thanks.
    Regards,
    Shardul Banker

    Try this:
    String sql = "begin ?:= EXPORT_HIST_ALARMS_FUNC(?, ?, ?); end;" ;
    CallableStatement cStatement = null;
    cStatement = connection.prepareCall(sql);
    cStatement.registerOutParameter(1,Types.VARCHAR);
    cStatement.setString(1,startDateTime);
    cStatement.setString(2,endDateTime);
    cStatement.setString(3,meType);
    cStatement.execute();
    msg = cStatement.getString(1);Regards,
    Martijn Teigeler
    Edited by: mTeigeler on Oct 13, 2007 10:22 AM

  • 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

  • Calling PL/SQL function from OCI?

    Hi,
    How do I execute a PL/SQL function from OCI?
    My test function:
    CREATE OR REPLACE FUNCTION GetNodeQuery(TypeId IN INTEGER) RETURN VARCHAR2 IS
    Query VARCHAR2(500);
    BEGIN
    Query := 'Select * from Logical_Name';
    RETURN Query;
    END GetNodeQuery;
    char SQL[16];
    strcpy(SQL, "GetNodeQuery(1)");
    char ColumnVariable[500];
    int VariableSize = 500;
    OCIStmtPrepare(qHandle, hError, SQL, (ub4)strlen(SQL),
    (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);
    OCIDefineByPos(qHandle, &pDefine, hError, 1,
    (dvoid*)ColumnVariable, (sb4)VariableSize,
    1,(dvoid*)0, (ub2*)0, (ub2*)0,
    OCI_DEFAULT);
    OCIStmtExecute(svchp, qHandle, hError, (ub4)1, (ub4)0,
    (CONST OCISnapshot *)NULL, (OCISnapshot*)NULL,
    OCI_DEFAULT);
    On the Execute I get an error saying that ORA-00900: invalid SQL statement
    Any Help would be appreciated.
    Thank You,
    Scott Metzger
    null

    Ok, I made a mistake the
    select GetNodeQuery(1) from dual
    only works with a simple function. My real life function has a cursor via DBMS_SQL.
    I presume I would need to pass the following in my OCIStmtPrepare call:
    Define
    tmp Varchar2[256];
    begin
    tmp := GetNodeQuery(1);
    end;
    Now how do I get the value of tmp out?
    I couldn't find any examples for calling functions from OCI. If you know of some could you post the url or send them to me?
    Thanks,
    *:> Scott
    [email protected]
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Tiago Nodari ([email protected]):
    you need to modify the sqlstatement to look something like this...
    begin
    GetNodeQuery(1)
    end;
    look into the OCI documentation, there are various examples of how to do it, including, binding and defining variables...
    <HR></BLOCKQUOTE>
    null

  • How do I call pl/sql function from Toplink

    I can easily call a stored procedure from Toplink
    ====================================================
    public Collection executeSelectingStoredProcedure(StoredProcedureCall storedProcedureCall) throws DAOException
    Collection returnValue = null;
    Session session = null;
    session = this.getSession();
    returnValue = session.executeSelectingCall(storedProcedureCall);
    session.release();
    return returnValue;
    ====================================================
    The same does not work for pl/sql functions. Doesnt Toplink treat function calls as a callable statement as in JDBC?
    "select <function_name>(<arguments>) from dual" seems to be a work around. If this or using expressions is the only solution can someone please tell me the reasoning behind this shift.
    Regards
    Aamir Dehlavi

    I have the same problem.
    I have a PL/SQL function that returns a number. This function receives 2 parameters. I use StoredProcedureCall plus ValueReadQuery.
    Session aSession = SessionManager.getManager().getDefaultSession();
    StoredProcedureCall call = new StoredProcedureCall();
    call.setProcedureName("CIO_UTILS.COUNT_USER_ROLES_IN_MODULE");
    call.addNamedArgument("p_persid");
    call.addNamedArgument("p_module");
    call.addUnamedOutputArgument("rolesnum", Integer.class);
    ValueReadQuery query = new ValueReadQuery();
    //query.bindAllParameters();
    query.setCall(call);
    query.addArgument("p_persid");
    query.addArgument("p_module");
    Vector parameters = new Vector();
    parameters.addElement(persid);
    parameters.addElement(theModule);
    Integer rolesnum = (Integer) aSession.executeQuery(query,parameters);
    aSession.release();
    if(rolesnum.intValue()<=0)return false; else return true;
    However, I receive the following error:
    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 96:
    PLS-00312: a positional parameter association may not follow a named association
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Error Code: 6550
    Call:BEGIN CIO_UTILS.COUNT_USER_ROLES_IN_MODULE(p_persid=>'SANCRA2791', p_module=>'PSL_MONITORING', ?); END;
         bind => [=> rolesnum]
    If comment the line
    "call.addUnamedOutputArgument("rolesnum", Integer.class);"
    Toplink is trating it as a procedure, and I also receive an error from PL/SQL.
    There should have to be a way of make it to receive the resoult somehow, but I do not know what.
    Thanks in advance.

  • How to call pl/sql function from oaf

    Dear  Friends,
    I am trying to call a function from oaf page .but iam getting error like
    java.sql.SQLException: ORA-01861: literal does not match format string
    ORA-06512: at line 1
    THis is my function  ,,callable statement
    FUNCTION CAR_LOAN_VALIDATION(P_PERSON_ID IN NUMBER
                                    ,P_DEDUCTION_START_DATE IN DATE
                                    ,P_DEDUCTION_END_DATE IN DATE
                                    ,P_LOAN_VALUE IN NUMBER
       RETURN VARCHAR2
       IS
          l_message                 VARCHAR2(100);
          l_contract_type           VARCHAR2(50);
          l_loan_eligible_date      DATE;
          l_grade                   VARCHAR2(15);
          l_old_loan_end_date       DATE;
          l_max_loan_end_date       DATE;
          l_remaining_amount        NUMBER;
          l_eligible_amt            NUMBER;
       BEGIN
            BEGIN
                SELECT --papf.person_id,
                       (SELECT meaning
                          FROM hr_lookups
                         WHERE lookup_type = 'ADTC_CONTRACT_TYPE'
                           AND lookup_code = attribute3) contract_type,
                       ADD_MONTHS (papf.original_date_of_hire, 11) loan_eligible_date,
                       DECODE (paaf.ass_attribute2,
                               'Chairman', 'Chairman',
                               SUBSTR (ass_attribute2, INSTR (ass_attribute2, '.', 1, 1) + 1,
                                       3)
                              ) grade,
                       (SELECT nvl(MAX (deduction_end_date),null)
                          FROM xxadtc_car_loan_request
                         WHERE person_id = p_person_id) old_loan_end_date,
                       to_date(ADD_MONTHS (p_deduction_start_date, 47)) max_loan_end_date
                       --to_date(ADD_MONTHS (sysdate, 47)) max_loan_end_date
                  INTO  l_contract_type
                        ,l_loan_eligible_date
                        ,l_grade
                        ,l_old_loan_end_date
                        ,l_max_loan_end_date
                  FROM per_all_people_f papf, per_all_assignments_f paaf
                 WHERE SYSDATE BETWEEN papf.effective_start_date AND papf.effective_end_date
                   AND papf.business_group_id = 81
                   AND papf.person_id = paaf.person_id
                   AND SYSDATE BETWEEN paaf.effective_start_date AND paaf.effective_end_date
                   AND papf.person_id =P_PERSON_ID;
            EXCEPTION
                WHEN others THEN
                    DBMS_OUTPUT.PUT_LINE('Error ');
            END;
            -- get Previous Car loan amount --
            BEGIN
                SELECT to_number(prrv.result_value)
                  INTO l_remaining_amount
                  FROM per_all_people_f papf,
                       per_all_assignments_f paaf,
                       pay_assignment_actions pac,
                       pay_run_results prr,
                       pay_run_result_values prrv,
                       pay_element_types_f petf,
                       pay_input_values_f pivf,
                       pay_element_classifications pec,
                       pay_payroll_actions ppa,
                       per_time_periods ptp
                 WHERE SYSDATE BETWEEN papf.effective_start_date AND papf.effective_end_date
                   AND papf.person_id = paaf.person_id
                   AND papf.business_group_id = 81
                   AND SYSDATE BETWEEN paaf.effective_start_date AND paaf.effective_end_date
                   AND paaf.assignment_id = pac.assignment_id
                   AND pac.assignment_action_id = prr.assignment_action_id
                   AND prr.run_result_id = prrv.run_result_id
                   AND prr.element_type_id = petf.element_type_id
                   AND SYSDATE BETWEEN petf.effective_start_date AND petf.effective_end_date
                   AND prrv.input_value_id = pivf.input_value_id
                   AND SYSDATE BETWEEN pivf.effective_start_date AND pivf.effective_end_date
                   AND pivf.NAME = 'Remaining Amount'
                   AND petf.classification_id = pec.classification_id
                   AND pac.payroll_action_id = ppa.payroll_action_id
                   AND ppa.time_period_id = ptp.time_period_id
                   AND TO_CHAR (ptp.pay_advice_date, 'Mon-YYYY') =
                                                                 TO_CHAR (SYSDATE, 'Mon-YYYY')
                   AND petf.element_name = 'Motar Ahlami Loan'
                --and     employee_number='10185'
                   AND papf.person_id = p_person_id;
            EXCEPTION
                WHEN no_data_found THEN
                   --DBMS_OUTPUT.PUT_LINE('ERROR: No data!');
                   l_remaining_amount:=0;
                WHEN others THEN
                    DBMS_OUTPUT.PUT_LINE('Error ');              
            END;
               select   GET_CAR_LOAN_ELIGI_AMT(P_PERSON_ID)
               into     l_eligible_amt
               from     dual;
               IF l_contract_type NOT IN ('Permanent') THEN
                    l_message := 'Contract Type Is not valid';
               END IF;
               IF l_loan_eligible_date < SYSDATE THEN
                    l_message:= 'Date of Join is less then one year';
               END IF;
               IF l_grade IN ('US','00','AUS','EM') THEN
                    l_message:= 'Your are not Eligible Grade';
               END IF;
               IF l_old_loan_end_date < SYSDATE THEN
                    l_message:= 'Previous Loan Duration is not completed';
               END IF;
               IF l_max_loan_end_date > P_DEDUCTION_END_DATE THEN
                    l_message:= 'Maxinum number of monthly payment of 48 month';
               END IF;
               IF l_remaining_amount >0 THEN
                    l_message:= 'Previous Car Loan amount is pending till';
               END IF;
               IF l_eligible_amt < p_loan_value THEN
                    l_message:= 'Please check Eligible Amount ';
               END IF;
          RETURN nvl(l_message,'S');
       EXCEPTION
          WHEN NO_DATA_FOUND
          THEN
             RETURN 'Error';
       END CAR_LOAN_VALIDATION;
    END XX_CAR_LOAN_REQUEST_PKG;
    CALLABLE STATEMENT CODE ---CO CODE
          if(pageContext.getParameter("Submit")!=null) {
             OAViewObject vo2 = (OAViewObject)am.findViewObject("XxadtcCarLoanRequestEOVO1");
                if(vo1!=null){
                   vo1.getCurrentRow().setAttribute("LoanStatus","Pending Approval");
                   int xxpersonId = pageContext.getEmployeeId();
                   String xxDeductionStartDate = vo2.getCurrentRow().getAttribute("DeductionStartDate").toString();//pageContext.getParameter("DeductionStartDate").toString();
    //                SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy/mm/dd");
    //                Date convertedDate1 = dateFormat1.parse("xxDeductionStartDate");
                   String xxDeductionEndDate = vo2.getCurrentRow().getAttribute("DeductionEndDate").toString();//pageContext.getParameter("DeductionEndDate").toString();
    //                SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy/mm/dd");
    //                Date convertedDate2 = dateFormat2.parse("xxDeductionEndDate");
                   String xxLoanValue = vo2.getCurrentRow().getAttribute("LoanValue").toString();//pageContext.getParameter("LoanValue").toString();
                    int iLoanValue = Integer.parseInt(xxLoanValue);
                    System.out.println("Entered into submit loop");
                    System.out.println("xxpersonId id is:"+xxpersonId);
                    System.out.println("xxDeductionStartDate id is:"+xxDeductionStartDate);
                    System.out.println("xxDeductionEndDate id is:"+xxDeductionEndDate);
                    System.out.println("xxLoanValue id is:"+xxLoanValue);
                  OADBTransaction txn = am.getOADBTransaction();
                  String sql ="BEGIN :1 :=XXADTC_CAR_LOAN_REQUEST_PKG.CAR_LOAN_VALIDATION(:2,:3,:4,:5); END;";
                  CallableStatement cs =  txn.createCallableStatement(sql,1);
                  String outputval = null;//  int outputval = 0;
                  try {
                      System.out.println("Entered in try loop of callable funtion validation");
                  cs.setInt(2,xxpersonId);
                        System.out.println("cs setInt(2,xxpersonId);is executed");
                  cs.setString(3,xxDeductionStartDate);
                        System.out.println("cs.setString(3,xxDeductionStartDate is executed);");
                  cs.setString(4,xxDeductionEndDate);
                        System.out.println("cs.setString(4,xxDeductionEndDate is executed);");
    //                              cs.setDate(3,xxDeductionStartDate);
    //                              cs.setDate(4,xxDeductionEndDate);
                  cs.setInt(5,iLoanValue);
                  cs.registerOutParameter(1,Types.VARCHAR);//  cs.registerOutParameter(1,Types.NUMERIC);
                  cs.execute();
                  outputval = cs.getString(1);// txn.commit();
                   System.out.println(outputval);
                        txn.commit();
                            if(outputval.equals("S"))
                            am.invokeMethod("apply");
                            else
                             throw new OAException("Organization name is:"+outputval,OAException.INFORMATION);
                        txn.commit();
                        catch(Exception sqle){
                        try {
                        cs.close();
                        catch (Exception e)
                        throw OAException.wrapperException(e);
                        throw OAException.wrapperException(sqle);
    Please help .where is the error is.
    please help
    let me know for any clarification.
    Thanks
    Aravinda.

    Hi Arvinda,
    Refer Below code.
    // In Controller
    java.sql.Date DeductionSDate; //declare variable
    //In PFR
      String xxDeductionStartDate = vo2.getCurrentRow().getAttribute("DeductionStartDate");
       OADBTransaction txn = am.getOADBTransaction();
         if(xxDeductionStartDate!=null)
                java.sql.Date startDate= txn.getOANLSServices().stringToDate(xxDeductionStartDate);
                DeductionSDate = startDate;
        Set this to cs.setDate(3,DeductionSDate);
    Thanks,
    Dilip

  • Calling pl/sql function from JSP to get data

    Hi,
    Ideally I want to pass the results of a PL/SQL function or procedure to my JSP page as a resultset or an array.
    I've manage to pass all the data as a string like this:
    // this works for a function that returns a string
    String str;
         CallableStatement cstmt = conn.prepareCall("begin ?:= temp_package.pass_string(); end;");
         cstmt.registerOutParameter(1,Types.VARCHAR);
         cstmt.execute();
         str = cstmt.getString(1);
    but if I try to pass a collection or Varray or Ref Cursor like this:
    // LETS TRY A PROCEDURE THAT ALTERS THE CONTENTS OF AN ARRAY
         CallableStatement cstmt = conn.prepareCall(" begin ?:= temp_package.pass_varray(); end;");
         cstmt.registerOutParameter(1,Types.ARRAY);
         cstmt.execute();
    or this:
    CallableStatement cstmt = conn.prepareCall(" begin ?:= temp_package.pass_cursor(); end;");
         cstmt.registerOutParameter(1,Types.CURSOR);
         cstmt.execute();
    or this:
    CallableStatement cstmt = conn.prepareCall(" begin ?:= temp_package.pass_cursor(); end;");
         cstmt.registerOutParameter(1,OracleTypes.CURSOR);
         cstmt.execute();
    I get an error saying that the type can�t be translated or something similar. It seems happy with VARCHAR but not with ARRAY,VARRAY or CURSOR.
    Can anyone help please as this has driven me crazy for hours surfing google and various forums. Thanks.

    Ok, I made the changes, but I'm now getting the following error:
    Error code = 1403
    Error message = ORA-01403: no data found
    ORA-06512: at "IOBOARD.GETSTATUS", line 6
    ORA-06512: at line 1
    The ora-01403 I don't understand because there is data for the name Kelly.Brace.
    ora-06512 error: at string line string.
    Here's what the code looks like after I made the changes:
    String sql = "{?=call ioboard.GetStatus(?)}";
          // create a Statement object
          myStatement = myConnection.prepareCall( sql );
          myStatement.setString( 1, "Kelly.Brace" );
          myStatement.registerOutParameter(2, java.sql.Types.LONGVARCHAR );
          // create a ResultSet object, and populate it with the
          // result of a SELECT statement
          ResultSet myResultSet = myStatement.executeQuery();
          // retrieve the row from the ResultSet using the
          // next() method
          myResultSet.next();
          // retrieve the user from the row in the ResultSet using the
          // getString() method
          String status = myResultSet.getString(1);
          System.out.println("Hello Kelly, your status is: " + status);
          // close this ResultSet object using the close() method
          myResultSet.close();Here's what the function looks like:
    CREATE OR REPLACE FUNCTION GetStatus( user_name in varchar2)
    RETURN VARCHAR2
    is
    v_status varchar2(10);
    BEGIN
    select iob_location into v_status
    from ioboard.iob_user
    where iob_username = user_name;
      RETURN( v_status);
    END;This works perfectly in the SQL Window:
    select iob_location
    from ioboard.iob_user
    where iob_username = 'Kelly.Brace';

  • How to call PL/SQL function from ODBC

    Greetings (and thanks for reading),
    I am using Oracle 9i (9.2.0.4) database, running on SUN [sparc] Solaris 9. I have created the following types:
    create or replace type NAME_VAL_TYP is object
    (NAME   varchar2(30)
    ,VALUE  varchar2(30))
    create or replace type PARMS_VARRAY_TYP is varray(10) of
    NAME_VAL_TYP
    /and the following PL/SQL function:
    function F0 (P_PARAMS  PARMS_VARRAY_TYP) return numberHow do I call this function from ODBC?
    Thanks (in advance),
    Avi.

    Sorry, this is not mapped in the ODBC driver--none of the object types are. The spec doesn't really account for them.

  • Calling PL/SQL function from AM

    Dear All,
    I have created a java method at AM level which returns a value in a method defined in controller, can any one help me that how i can execute database function from AM ?.
    Regards,
    Haroon.

    Check my reply in this thread too.
    Re: Calling Database Procedures in OAF Page
    Thanks
    AJ

  • How to Run a .sql file from simple java class

    How to execute a .sql file consisting of Complex Queries,procedures through simple java class.
    The queries may have different delimiters,queries independant of each other.
    I am able to do with Specific De-limiter.But I need in such a way that there should not be any
    Constraints. Since My .sql may Contain different De-limiters.
    If any one can Suggest Some Solution.
    It will be Great Help.
    regards
    Anil

    Check out ibatis script runner, it' a third party library but quite handy for running sql files...
    m

  • How do you call a JavaScript function from a Java applet

    I have an Applet that needs to run on the following platforms: Internet Explorer (Windows-NT, Windows -2000), Netscape (Windows-NT, Windows-2000, Sun(Solaris), RedHat(Linux), HP(11.0), IBM(AIX)).
    The Applet needs to call a JavaScript function that is included on the HTML page that contains the applet. In JRE-1.3.1 I used the AppletContext.showDocument(url,"_self" ) where the url is "javascript:MyScript('param1')". This works just fine. I tried using showDocument without the second parameter and all the other choices for the second parameter and none of them worked (nothing happened).
    I tried the same code with JRE version 1.4-beta. It seems that version 1.4-beta no longer supports a URL that starts with "javascript" in the AppletContext.showDocument(url,"_self" ) method. The error is:
    netscape.javascript.JSException: call does not support self.open
    at sun.plugin.javascript.navig.Window.call(Unknown Source)
    at sun.plugin.ActivatorAppletContext.showDocument(Unknown Source)
    I tried to catch the JSException but I cannot seem to.
    I then tried a completely different approach. I then grabbed the JSObject for the page and tried to call my javascript function (MyScript) directly:
    JSObject theObj = JSObject.getWindow(this);
    Object paramArray[] = new Object[1];
    paramArray[0] = Param1;
    theObj.call("MyScript", paramArray);
    This worked fine on Netscape[Windows-NT, Windows-2000]. HP throws a JSException on getWindow() and Solaris just hangs. I did not even try IE.
    What is the recommended approach here?

    you can try this, it worked for me:
    JSObject win = JSObject.getWindow(this);
    win.eval(function_call);
    I have other ways also, so if this doesn't work, let me know.

Maybe you are looking for

  • FM 10.0.2 Patch released

    A new patch is being pushed through the Updater right now. The new version is 10.0.2.419. The SaveAsPDF CMYK option should be reasonably reliable now, but please run a preflight before submitting to a print provider. From the Read Me file: 1. Followi

  • Reissue:  Connection Timed Out and Airport Admin Utility Issues

    I put this post last November, but no one seemed to have a solution to it, so I thought I would try again... Our lab has and Airport Extreme (802.11g). Intermittently (once a week to a couple of times a day) our airport extreme will stop allowing new

  • Can Revel upload this Format MPEG HDTV 1080p

    Can Revel upload this Format MPEG HDTV 1080p

  • MRP - Single Purchase requisition for multiple Items

    Hi We have recently introduced MRP module in SAP .In some specific scaeanrios , we want to create a single Purchase Requisition for multiple items .Standard SAP generate different Purchase requisition for each item Is there any way out

  • Migration from SQL 7.0 to Oracle

    Hey guys ! I am required to migrate from MS SQL7.0 to oracle which has around 150 stored procedures and a database schema of 50 tables. its oracle 8/8i version. can u suggest how to go about ? ie. should I used Migration workbench or go doing it conv