Passing table data to pl sql procedure oaf

Hi All,
I have a requirement where i have to pass table data to plsql procedure.
In the first page i select the REQUISITION and click on RETURN button and it will take me to the next page.
and in the Next page i will click on APPLY button.
When i click on APPLY, it will call the procedure and will give input to the procedure whatever has been selected when i have selected requisition.
Please help. Please tell me the approach how to get this task done. A sample code will work.
Hope the requirement is clear.
Thanks in Advance.

Hi Chinmay,
Refer below code for Your Requirement.
//Code For Quering Data
import java.sql.PreparedStatement;
import java.sql.ResultSet;
Connection conn = pageContext.getApplicationModule(webBean).getOADBTransaction().getJdbcConnection();
String Query = "SELECT organization_id FROM hr_operating_units WHERE organization_id = fnd_global.org_id";
PreparedStatement stmt = conn.prepareStatement(Query);
resultset=stmt.executeQuery();
while (resultset.next())
orgId = (String)resultset.getString("ORGANIZATION_ID").toString();
conn.commit();
catch(Exception e)
e.printStackTrace();
//Code for Pass Resulted column to Procedure Input for delete Particular Record
Execute parameterized PL SQL procedure from OAF page
Let us try to call PL/SQL package from OAF page. We will try to remove selected line from Database.
Package Spec
CREATE OR REPLACE PACKAGE APPS.genpack_pkg
AS
PROCEDURE roll_delete_proc (orgId IN VARCHAR2);
END genpack_pkg;
Package Body
CREATE OR REPLACE PACKAGE BODY APPS.genpack_pkg
AS
PROCEDURE roll_delete_proc (orgId IN VARCHAR2)
AS
BEGIN
DELETE FROM pklist_roll_details_temp
WHERE roll_line_id = orgId;
COMMIT;
END roll_delete_proc;
END genpack_pkg;
//in Controller PFR
import java.sql.CallableStatement;
if (pageContext.getParameter("ActionsButton") != null)
String val = pageContext.getParameter("ActionsChoice");
if ("DELLN".equals(val))
CallableStatement cstmt = null;
for (OAViewRowImpl row = (OAViewRowImpl)tempvo.first(); row != null; row = (OAViewRowImpl)tempvo.next()) {
if ((row.getAttribute("Selectflag") == null) ||
(!row.getAttribute("Selectflag").toString().equals("Y"))) continue;
try {
int rollid = Integer.parseInt((String)row.getAttribute("orgId"));
Connection conn = am.getOADBTransaction().getJdbcConnection();
if (rollid == 1)
temphm.put(row.getAttribute("orgId").toString(), row.getAttribute("PoNumber").orgId());
tempvo.removeCurrentRow();
else
try
StringBuilder sb = new StringBuilder();
sb.append(rollid);
String strI = sb.toString();
System.out.println("Inside else in delete");
cstmt = conn.prepareCall("{call GENPACK_PKG.tpc_roll_delete_proc(?)}");
cstmt.setString(1, strI);
System.out.println("Oracle Callable Statment Execution Init for Delete");
cstmt.execute();
catch (SQLException e) {
throw new OAException(e.toString(), (byte)0);
}tempvo.removeCurrentRow();
catch (OAException e) {
throw new OAException("No row selected", (byte)3);
Thanks,
Dilip

Similar Messages

  • Pass a date parameter to Stored Procedure

    Hello friends,
    Can you help to pass a date parameter to Stored procedure from JSP. This is my code:
    In Oracle 9i I have this:
    PROCEDURE SP_EDORES(
    pfechaini IN hist_pol_reclama.hrc_fecha_contabilidad%Type, <-- This is a date field
    pfechafin IN hist_pol_reclama.hrc_fecha_contabilidad%Type, <-- This is a date field
    p_recordset OUT PKG_REP_CIERRE.cursor_type) AS
    In JSP have this:
    CallableStatement stmt = (CallableStatement)conn.prepareCall( "begin PKG_REP_CIERRE.SP_EDORES(?,?,?); end;" );
    stmt.registerOutParameter(3,oracle.jdbc.driver.OracleTypes.CURSOR);
    stmt.setDate(1,Date.valueOf("01-06-2005"));
    stmt.setDate(2,Date.valueOf("30-06-2005"));
    ResultSet rset = (ResultSet)stmt.getObject(3);
    while (rset.next()) {
    %>
    <TR>
    <TD ALIGN=CENTER> <%= rset.getString(1) %> </TD>
    <TD ALIGN=CENTER> <%= rset.getString(2) %> </TD>
    <TD ALIGN=CENTER> <%= rset.getString(3) %> </TD>
    <TD ALIGN=CENTER> <%= rset.getInt(4) %> </TD>
    </TR>
    <%
    The Stored Procedure returns de Result set, however I think does not recognized the date format because I need it with this format dd-mm-yyyy.
    Thanks in advance

    to use Date you will need the oracle package.
    u can try this other solution: use String, not Date
    CallableStatement stmt = (CallableStatement)conn.prepareCall( "begin PKG_REP_CIERRE.SP_EDORES(?,?,?); end;" );
    stmt.registerOutParameter(3,oracle.jdbc.driver.OracleTypes.CURSOR);
    stmt.setString(1,"01-06-2005");
    stmt.setString(2,"30-06-2005");
    ResultSet rset = (ResultSet)stmt.getObject(3);
    while (rset.next()) {
    %>
    if this don't work you can change your PL/SQL to get Strings and do the conversion with TO_DATE in the sql statement.

  • How to upload sap r/3 table data to ms-sql 2000?

    Dear Friends
    any one can help me out step by step to upload sap r/3 table data to ms-sql 2000.
    Thanks in advance

    hi
    good
    go through this link
    http://www.itcserver.com/blog/2006/06/29/data-transfer-methods/
    thanks
    mrutyun^

  • How to pass table data to brf plus application through abap program

    Dear All,
    i have a question related to BRF Plus management through abap program.
    In brf plus application end, Field1,field2,field3 these 3 are importing parameters.
                                           Table1->structure1->field4,field5 this is the table,with in one structure is there and 2 fields.
    in my abap program, i am getting values of fields let us take field1,field2,field3,field4,field5.
    And my question is
    1) How to pass fields to BRF Plus application from abap program.
    2)How to pass Table data to BRF Plus application from abap program.
    3)How to pass Structure data to BRF Plus application from abap program.
    4)How to get the result data from BRF Plus application to my abap program.
    And finally , how to run FDT_TEMPLATE_FUNCTION_PROCESS.
    How do i get the code automatically when calling the function in brf plus application.
    Regards
    venkata.

    Hi Prabhu,
    Since it is a Custom Fm i cant see it in my system.
    Look if u want to bring data in internal table then there could be two ways::
    1) your FM should contain itab in CHANGING option , so that u can have internal table of same type and pass through FM,
    2) read values one by one and append to internal table.
    Thanks
    Rohit G

  • How to pass table data into below code for alv

    hi
    i want to pass table data into alvgrid
    i dont know how to pass table data.
    here instead of passing ABC into internal table
    i want to pass table data .
    please help me
    ialv-test1 = 'ABC'.
    form get_data.
    ialv-test1 = 'ABC'.
    ialv-test2 = 'DEF'.
    append ialv.
    ialv-test1 = 'GHI'.
    ialv-test2 = 'JKL'.
    append ialv.
    ialv-test1 = '123'.
    ialv-test2 = '456'.
    append ialv.
    endform
    thanks in advanced.

    Have a look at below links. It gives you sample code of alv grid.
    http://sap.niraj.tripod.com/id64.html
    http://www.sap-img.com/abap/sample-programs-on-alv-grid.htm
    Have a look at below links for SAP Help.
    http://help.sap.com/saphelp_nw04/helpdata/en/8d/e994374c9cd355e10000009b38f8cf/content.htm
    http://help.sap.com/saphelp_erp2004/helpdata/en/12/904f42d5f811d2b469006094192fe3/content.htm
    Best Regards,
    Vibha
    *Please mark all the helpful answers

  • Read from Page Approval List Table in a PL/SQL procedure

    Need help, I am new to OA Framework.
    We have a requirement to validate the added requisition Approvers against some criteria.
    The Approvers are added using Add approvers on the Requisition Creation page.
    The source code shows: ApproverListRn.ApprListTable as the name of the table list which holds the approver names.
    1) Is there a way to read the data from ApproverListRn.ApprListTable in a PL/SQL procedure?
    2) How and when does this list of approvers get added to the po_approvallist_headers table? which package is used?
    Please any help is greatly appreciated.
    Thanks

    1) Is there a way to read the data from ApproverListRn.ApprListTable in a PL/SQL procedure?
    Using OAF, you can read the value from the table and through OracleCallableStatement you can call a pl/sql procedure passing the read value.2) How and when does this list of approvers get added to the po_approvallist_headers table? which package is used?
    This is page and code specific. You will have to debug and find out.--Shiv                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Passing Tables back from Java Stored Procedures

    Thomas Kyte has written (in reference to
    trying to pass an array back from a stored
    function call):
    You can do one of two things (and both require the use of
    objects). You cannot use PLSQL table types as JDBC cannot bind to
    this type -- we must use OBJECT Types.
    [snip]
    Another way is to use a result set and "select * from
    plsql_function". It could look like this:
    ops$tkyte@8i> create or replace type myTableType as table of
    varchar2 (64);
    2 /
    Type created.
    ops$tkyte@8i>
    ops$tkyte@8i>
    ops$tkyte@8i> create or replace
    2 function demo_proc2( p_rows_to_make_up in number )
    3 return myTableType
    4 as
    5 l_data myTableType := myTableType();
    6 begin
    7 for i in 1 .. p_rows_to_make_up
    8 loop
    9 l_data.extend;
    10 l_data(i) := 'Made up row ' &#0124; &#0124; i;
    11 end loop;
    12 return l_data;
    13 end;
    14 /
    Function created.
    ops$tkyte@8i>
    ops$tkyte@8i> select *
    2 from the ( select cast( demo_proc2(5) as mytableType )
    3 from dual );
    COLUMN_VALUE
    Made up row 1
    Made up row 2
    Made up row 3
    Made up row 4 [Image]
    Made up row 5
    So, your JDBC program would just run the query to get the data.
    If the function "demo_proc2" cannot be called from SQL for
    whatever reason (eg: it calls an impure function in another piece
    of code or it itself tries to modify the database via an insert
    or whatever), you'll just make a package like:
    ops$tkyte@8i> create or replace package my_pkg
    2 as
    3
    4 procedure Make_up_the_data( p_rows_to_make_up in
    number ); 5 function Get_The_Data return myTableType;
    6 end;
    7 /
    Package created.
    ops$tkyte@8i>
    ops$tkyte@8i> create or replace package body my_pkg
    2 as
    3
    4 g_data myTableType;
    5
    6 procedure Make_up_the_data( p_rows_to_make_up in number )
    7 as
    8 begin
    9 g_data := myTableType();
    10 for i in 1 .. p_rows_to_make_up
    11 loop
    12 g_data.extend;
    13 g_data(i) := 'Made up row ' &#0124; &#0124; i;
    14 end loop;
    15 end;
    16
    17
    18 function get_the_data return myTableType
    19 is
    20 begin
    21 return g_data;
    22 end;
    23
    24 end;
    25 /
    Package body created.
    ops$tkyte@8i>
    ops$tkyte@8i> exec my_pkg.make_up_the_data( 3 );
    PL/SQL procedure successfully completed.
    ops$tkyte@8i>
    ops$tkyte@8i> select *
    2 from the ( select cast( my_pkg.get_the_data as mytableType
    ) 3 from dual );
    COLUMN_VALUE
    Made up row 1
    Made up row 2
    Made up row 3
    And you'll call the procedure followed by a query to get the
    data...
    I have tried this, and it works perfectly.
    My question, is what does the wrapper look
    like if the stored function is written
    in java instead of PL/SQL? My experiments
    with putting the function in java have been
    dismal failures. (I supposed I should also
    ask how the java stored procedure might
    look also, as I suppose that could be where
    I have been having a problem)
    null

    Thanks for the response Avi, but I think I need to clarify my question. The articles referenced in your link tended to describe using PL/SQL ref cursors in Java stored procedures and also the desire to pass ref cursors from Java to PL/SQL programs. Unfortunately, what I am looking to do is the opposite.
    We currently have several Java stored procedures that are accessed via select statements that have become a performance bottleneck in our system. Originally the business requirements were such that only a small number of rows were ever selected and passed into the Java stored procedures. Well, business requirements have changed and now thousands and potentially tens of thousands of rows can be passed in. We benchmarked Java stored procedures vs. PL/SQL stored procedures being accessed via a select statement and PL/SQL had far better performance and scaleable. So, our thought is by decouple the persistence logic into PL/SQL and keeping the business logic in Java stored procedures we can increase performance without having to do a major rewrite of the existing code. This leads to the current problem.
    What we currently do is select into a Java stored procedure which has many database access calls. What we would like to do is select against a PL/SQL stored procedure to aggregate the data and then pass that data via a ref cursor (or whatever structure is acceptable) to a Java stored procedure. This would save us a significant amount of work since the current Java stored procedures would simple need to be changed to not make database calls since the data would be handed to them.
    Is there a way to send a ref cursor from PL/SQL as an input parameter to a Java stored procedure? My call would potentially look like this:
    SELECT java_stored_proc(pl/sql_stored_proc(col_id))
    FROM table_of_5000_rows;
    Sorry for the lengthy post.

  • Using UDT's for passing rows to a PL/SQL procedure

    I'm trying to get a list of rows into a procedure...
    With ODP 11 - I thought that I would simply need to create a UDT of an object (i.e. user_id, first_name, last_name) and - then type which is a collection of that object.
    Then - using that object type collection as a parameter in my procedure - pass the numerous rows from .NET in.
    I've found a examples with varray's, nested varrays etc... but - nothing straight forward with passing a collection of rows.
    Does anyone know of any online examples that illustrate this?
    Thanks for your help!

    Hi,
    A BLOB variable is just a pointer to binary data and you are passing a text string to your procedure which is why you have the error. So to write a blob into a table in a procedure you need something like this:
    CREATE OR REPLACE PROCEDURE testone(
    V_TEXT IN VARCHAR2
    AS
    V_SIGIMG BLOB;
    BEGIN
    insert into sin_image values(empty_blob())
    returning blobcol into V_SIGIMG;
    -- then copy the text as binary data, this does not convert the text to binary data
    DBMS_LOB.WRITE(V_SIGIMG,1,LENGTH(V_TEXT),v_TEXT);
    commit;
    END;
    /However, if you want to upload images into the table it is easier to use the Apex functionality to upload the image into the APEX_APPLICATION_FILES table then move the blob into your table using an INSERT or UPDATE.
    Rod West

  • Passing variable values to pl/sql procedures

    Hi,
    I wanted to log the step name and message into a table whenever a particular step/interface failed in the ODI package.
    Ex:PKG1
    A----OK--->B----OK-->C--OK-->LOG SUCCESS status into table. All steps are sequenced.
    when not OK
    A----KO--->B----KO-->C--KO-->LOG failed status into table with step and message.
    I have created 4 variables in ODI and used these vairables in to pass values in pl/sql procedure scenario.
    I have drag and drop procedure scenario and given values to every variable...thing is for i want to get the step name dynamically for the procedure scenario's variable i am directly passing
    v_int_step=odiRef.getPrevStepLog("STEP_NAME").
    I dont want drag and drop procedure for each KO and then pass values to v_int_step=A or B or C .
    My scenario command look like this for KO
    OdiStartScen "-SCEN_NAME=PROC_LOGEXE_STATUS" "-SCEN_VERSION=-1" "-LOG_LEVEL=3" "-SYNC_MODE=1" "-SESSION_NAME=PROC_CSA_LOGEXE_STATUS_CS_BRANCHES" "-FLEXCUBE_OFSAA.v_execution_status=E" "-project1.v_scen_int_name=A" "-project1.v_batch_id=PKG_GLOBAL_MNT_HANDOFF" "-project1.v_step_name=odiRef.getPrevStepLog("STEP_NAME")"
    I am getting following error
    oracle.odi.oditools.OdiToolInvalidParameterException: Error while setting parameters on tool
         at com.sunopsis.dwg.function.SnpsFunctionBase.getCoreOdiTool(SnpsFunctionBase.java:607)
         at com.sunopsis.dwg.function.SnpsFunctionBase.getSunopsisApi(SnpsFunctionBase.java:480)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execIntegratedFunction(SnpSessTaskSql.java:1340)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java:2785)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2515)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:537)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:449)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1954)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:322)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:224)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:246)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:237)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:794)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:114)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:83)
         at java.lang.Thread.run(Thread.java:619)
    Caused by: com.sunopsis.tools.core.exception.SnpsSimpleMessageException: Invalid parameter
         at com.sunopsis.dwg.function.SnpsFunctionBase.getCoreOdiTool(SnpsFunctionBase.java:599)
         ... 15 more
    Please help me ,
    Thanks In Advance

    Hi,
    Mistakes i found in the script,
    1. You need to pass the variables with the "-<YOUR PROJECT CODE>.VARIABLE NAME" which i suppose would be in UPPER CASE.
    2. You need to pass OdiPrevStepLog with <%=%> enclosed. So your script will looks like,
    OdiStartScen "-SCEN_NAME=PROC_LOGEXE_STATUS" "-SCEN_VERSION=-1" "-LOG_LEVEL=3" "-SYNC_MODE=1" "-SESSION_NAME=PROC_CSA_LOGEXE_STATUS_CS_BRANCHES" "-FLEXCUBE_OFSAA.v_execution_status=E" "-PROJECT1.v_scen_int_name=A" "-PROJECT1.v_batch_id=PKG_GLOBAL_MNT_HANDOFF" "-PROJECT1.v_step_name=<%=odiRef.getPrevStepLog( "STEP_NAME" )%>"
    Thanks,
    Guru

  • XML Data from PL/SQL procedure -- special character issue (eBS)

    Hi All,
    I am developing a report, where the XML data is created by a PL/SQL procedure. I chose this approach over a data template, since there is a lot of processing involved in producing the actual data, and it cannot be done by select-statements alone. The report is run as a regular concurrent request.
    So far so good. There is a problem though. Every time the data contains special characters (ä, ö, umlauts), the concurrent request is completed with a warning, the log confirms that "One or more post-processing actions failed.", also there is no output file. The XML structure is valid as such. The report runs smoothly and produces the output when the XML data does not contain special characters.
    I am producing the XML lines by using the standard FND_FILE.PUT_LINE procedure: Fnd_File.put_line(Fnd_File.output, '<?xml version="1.0" encoding="UTF-8"?>'); This seems like a character encoding issue, but declaring the UTF-8 encoding in this way does not solve the problem.
    Any ideas what can be done to fix this? I have been searching Metalink but cannot find an answer. Many thanks for your kind help.
    Best Regards, Matilda

    Hi Rajesh,
    One idea I have, is that it might be possible to modify the PL/SQL code into a "before report" type trigger, attached to a data template. The code would process the data and write the lines into a temporary table, from which the data template could retrieve them in a simple select-query. However, it would be neat to be able to solve this without adding an extra layer of processing, since BI Publisher supposedly supports PL/SQL procedures as the data source.
    The data in this case is all correct, special characters are an intrinsic feature of the Finnish language. :)
    Best Regards, Matilda

  • Best Practice for ViewObjects when inserting data through pl/sql procedure

    My applications is oracle form based enterprise level application and we are now developing new module in ADF 11g but there is restriction that all data insertion, updation, and deletion will be through oracle pl/sql procedures. Now my question is that adf pages should be binded with ViewObjects based on Entity Object or with Viewobjects not based on Entity / sql query. Currently I have developed pages with programmatic ViewObjects which are neither based on Entity Objects nor on sql query. In those view objects, i create transient attributes and then used it to create adf pages. Then on save, i extract the data from ViewObject's current row and pass it to procedure. This is working fine but just wondering whether this approach is ok or there is better alternative for that. Ideally i want to create ViewObjects based on EntityObject but don't finding any way to synchronize entityObjects with data inserted through procedures.

    Hi,
    I create a EO for the Database-View and override the doDML()-Method. For insert/update and delete I call the pl/sql-functions.
    See "38.5 Basing an Entity Object on a PL/SQL Package API" in Oracle® Fusion Middleware Fusion Developer's Guide for Oracle Application Development
    Framework.

  • Passing XMLType Data into oracle stored procedure using JDBC

    Hi Friends,
    I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.
    Following are the environment details
    JDK Version: 1.6
    Oracle: 10g
    Server: Tomcat 6.x
    Thanks in Advance

    user4898687 wrote:
    I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.As stated - no.
    A 'file' is a file system entity. There is no way to pass a 'file' anywhere. Not PL/SQL. Not java.
    Now you can pass a file path (a string) in java and to PL/SQL.
    Or you can pass xml data (a string) in java and to PL/SQL. For PL/SQL you could use eithe a varchar2, if the xml is rather small, or a blob/clob.

  • Passing arrays through multiple PL/SQL procedures and functions

    I am maintaining a large PL/SQL application. There is a main procedure that is initially called which subsequently passes information to other PL/SQL functions and procedures. In the end an error code and string is passed to PUT_LINE so it can be displayed. What I would like to be able to do is have an array that stores an error code and string for each error that it comes upon during going through each of the procedures and functions. This would involve passing these codes and strings from function to function within the pl/sql application. What would be the best way to implement this and is it possible to pass arrrays or records to other PL/SQL functions? Thanks.

    Here is one simulation ->
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
    PL/SQL Release 10.2.0.3.0 - Production
    CORE    10.2.0.3.0      Production
    TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - Production
    Elapsed: 00:00:00.20
    satyaki>
    satyaki>
    satyaki>create or replace type n_array is table of number;
      2  /
    Type created.
    Elapsed: 00:00:07.10
    satyaki>
    satyaki>CREATE OR REPLACE PROCEDURE Get_Array(array_in IN n_array,
      2                                        array_out OUT n_array)  
      3  IS
      4  BEGIN 
      5    array_out := n_array(); 
      6    FOR i IN 1..array_in.count 
      7    LOOP 
      8      array_out.extend; 
      9      array_out(i) := array_in(i) * 2; 
    10    END LOOP;
    11  END Get_Array;
    12  /
    Procedure created.
    Elapsed: 00:00:00.89
    satyaki>
    satyaki>
    satyaki>Create or Replace Procedure Set_Array(myArray IN n_array)
      2  is  
      3    i   number(10);  
      4    rec emp%rowtype;  
      5    w n_array:=n_array(1200,3200);
      6    bucket n_array := n_array();
      7  Begin
      8    Get_Array(w,bucket);  
      9   
    10    for i in 1..myArray.count  
    11    loop 
    12      select *  
    13      into rec 
    14      from emp 
    15      where empno = myArray(i); 
    16      dbms_output.put_line('Employee No:'||rec.empno||' Name:'||rec.ename);
    17      for j in 1..bucket.count
    18      loop
    19        dbms_output.put_line('Commission Sub Type: '||bucket(j));
    20      end loop;
    21    end loop; 
    22  End Set_Array;
    23  /
    Procedure created.
    Elapsed: 00:00:01.33
    satyaki>
    satyaki>
    satyaki>select * from emp;
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          9999 SATYAKI    SLS             7698 02-NOV-08      55000       3455         10
          7777 SOURAV     SLS                  14-SEP-08      45000       3400         10
          7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
          7566 JONES      MANAGER         7839 02-APR-81       2975                    20
          7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
          7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
          7782 CLARK      MANAGER         7839 09-JUN-81       4450                    10
          7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
          7839 KING       PRESIDENT            17-NOV-81       7000                    10
          7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
          7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7900 JAMES      CLERK           7698 03-DEC-81        950                    30
          7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
    13 rows selected.
    Elapsed: 00:00:00.28
    satyaki>
    satyaki>declare
      2    v n_array:=n_array(9999,7777);  
      3  begin  
      4    Set_Array(v);  
      5  end;
      6  /
    Employee No:9999 Name:SATYAKI
    Commission Sub Type: 2400
    Commission Sub Type: 6400
    Employee No:7777 Name:SOURAV
    Commission Sub Type: 2400
    Commission Sub Type: 6400
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.15
    satyaki>
    satyaki>Regards.
    Satyaki De.

  • How to pass a date parameter(from a procedure IN) to a API

    Hi,
    CREATE OR REPLACE package body xxal_basic_sal_increment_pkg1 as
    procedure emp_pro_inc1(ERRBUF VARCHAR2,RETCODE OUT NUMBER,
    p_business_group_id_enter in number,p_change_date in varchar2) is
    CURSOR STAFF IS
    SELECT pp.ASSIGNMENT_ID
    ,peo.EMPLOYEE_NUMBER employee_no
    ,pp.OBJECT_VERSION_NUMBER
    ,pp.PAY_PROPOSAL_ID
    ,pp.PROPOSED_SALARY_N basic_salary
    ,pp.PROPOSAL_REASON
    ,pp.change_date
    ,pp.BUSINESS_GROUP_ID
    ,pg.name
    ,pr.PERFORMANCE_RATING,
    '' v_effective_start_date,
    '' v_effective_end_date
    FROM per_all_people_f peo,
    per_all_assignments_f pa,
    per_pay_proposals pp,
    per_grades_tl pg,
    per_performance_reviews_v pr
    where pa.person_id = peo.PERSON_ID
    and pa.ASSIGNMENT_ID = pp.ASSIGNMENT_ID
    and peo.PERSON_ID=pr.PERSON_ID
    and pg.GRADE_ID=pa.GRADE_ID
    --and peo.EMPLOYEE_NUMBER=STAFF_VAR.employee_no
    and sysdate between peo.EFFECTIVE_START_DATE and peo.EFFECTIVE_END_DATE
    and sysdate between pa.EFFECTIVE_START_DATE and pa.EFFECTIVE_END_DATE
    and peo.BUSINESS_GROUP_ID = p_business_group_id_enter
    and pp.change_DATE = (select max(change_DATE) from per_pay_proposals temp
    where ASSIGNMENT_ID =pp.ASSIGNMENT_ID);
    --L_BUSINESS_GROUP_ID NUMBER:=5128;
    L_ASSIGNMENT_ID NUMBER;
    L_PAY_PROPOSAL_ID NUMBER;
    L_OBJECT_VERSION_NUMBER NUMBER;
    L_pyp_proposed_sal_warning BOOLEAN;
    L_additional_comp_warning boolean;
    l_person_id number;
    L_COMMON boolean;
    L_ELEMENT_ENTRY_ID NUMBER;
    TEMP NUMBER;
    L_EFFECTIVE_START_DATE DATE;
    L_MULTI VARCHAR2(30):='N';
    L_APPROVED VARCHAR2(30):='Y';
    L_CHANGE_DATE DATE:=TO_DATE('31-JAN-2008','DD-MON-YYYY');
    BEGIN
    v_disp_output:='EMPLOYEE_NUMBER'||','||
    'BASIC'||','||
    'EFF START DATE'||','||
    'EFF END DATE';
    fnd_file.put_line(FND_FILE.output,v_disp_output);
    FOR STAFF_VAR IN STAFF LOOP
    L_ELEMENT_ENTRY_ID:=null;
    begin
    select assign.assignment_id,assign.effective_start_date into
    l_assignment_id,l_change_date_new
    from per_people_f peo,per_assignments_f assign
    where peo.person_id=assign.person_id
    and sysdate between peo.effective_start_date and peo.effective_end_date
    and sysdate between assign.effective_start_date and assign.effective_end_date
    and current_employee_flag='Y'
    and primary_flag='Y'
    and peo.business_group_id=l_business_group_id
    and peo.employee_number=staff_var.employee_no;
    L_CHANGE_DATE_new:=L_CHANGE_DATE;
    --L_CHANGE_DATE_new:=STAFF_VAR.v_effective_start_date;
    begin
    HR_MAINTAIN_PROPOSAL_API.INSERT_SALARY_PROPOSAL
    P_PAY_PROPOSAL_ID=>L_PAY_PROPOSAL_ID
    ,P_ASSIGNMENT_ID=>staff_var.ASSIGNMENT_ID
    ,P_BUSINESS_GROUP_ID=>staff_var.BUSINESS_GROUP_ID
    ,P_CHANGE_DATE=>L_CHANGE_DATE_new
    ,P_PROPOSED_SALARY_N=>STAFF_VAR.basic_salary
    ,P_OBJECT_VERSION_NUMBER=>STAFF_VAR.OBJECT_VERSION_NUMBER
    ,p_multiple_components=>L_MULTI
    ,p_approved=>L_APPROVED
    ,P_VALIDATE=>false
    ,p_element_entry_id =>L_ELEMENT_ENTRY_ID
    ,P_INV_NEXT_SAL_DATE_WARNING=>l_common
    ,P_PROPOSED_SALARY_WARNING=>L_COMMON
    ,P_APPROVED_WARNING=>L_COMMON
    ,P_PAYROLL_WARNING=>L_COMMON
    in the above code the variable L_CHANGE_DATE DATE is hard coded .
    but we need to supply this variable value as dynamic, means (p_change date--procedure IN Parameter )
    i tried like below ,
    CREATE OR REPLACE package body xxal_basic_sal_increment_pkg1 as
    procedure emp_pro_inc1(ERRBUF VARCHAR2,RETCODE OUT NUMBER,
    p_business_group_id_enter in number,p_change_date in varchar2) is
    CURSOR STAFF IS
    SELECT pp.ASSIGNMENT_ID
    ,peo.EMPLOYEE_NUMBER employee_no
    ,pp.OBJECT_VERSION_NUMBER
    ,pp.PAY_PROPOSAL_ID
    ,pp.PROPOSED_SALARY_N basic_salary
    ,pp.PROPOSAL_REASON
    ,pp.change_date
    ,pp.BUSINESS_GROUP_ID
    ,pg.name
    ,pr.PERFORMANCE_RATING,
    '' v_effective_start_date,
    '' v_effective_end_date
    FROM per_all_people_f peo,
    per_all_assignments_f pa,
    per_pay_proposals pp,
    per_grades_tl pg,
    per_performance_reviews_v pr
    where pa.person_id = peo.PERSON_ID
    and pa.ASSIGNMENT_ID = pp.ASSIGNMENT_ID
    and peo.PERSON_ID=pr.PERSON_ID
    and pg.GRADE_ID=pa.GRADE_ID
    --and peo.EMPLOYEE_NUMBER=STAFF_VAR.employee_no
    and sysdate between peo.EFFECTIVE_START_DATE and peo.EFFECTIVE_END_DATE
    and sysdate between pa.EFFECTIVE_START_DATE and pa.EFFECTIVE_END_DATE
    and peo.BUSINESS_GROUP_ID = p_business_group_id_enter
    and pp.change_DATE = (select max(change_DATE) from per_pay_proposals temp
    where ASSIGNMENT_ID =pp.ASSIGNMENT_ID);
    --L_BUSINESS_GROUP_ID NUMBER:=5128;
    L_ASSIGNMENT_ID NUMBER;
    L_PAY_PROPOSAL_ID NUMBER;
    L_OBJECT_VERSION_NUMBER NUMBER;
    L_pyp_proposed_sal_warning BOOLEAN;
    L_additional_comp_warning boolean;
    l_person_id number;
    L_COMMON boolean;
    L_ELEMENT_ENTRY_ID NUMBER;
    TEMP NUMBER;
    L_EFFECTIVE_START_DATE DATE;
    L_MULTI VARCHAR2(30):='N';
    L_APPROVED VARCHAR2(30):='Y';
    L_CHANGE_DATE DATE:=TO_DATE(p_change_date,'DD-MON-YYYY');
    BEGIN
    v_disp_output:='EMPLOYEE_NUMBER'||','||
    'BASIC'||','||
    'EFF START DATE'||','||
    'EFF END DATE';
    fnd_file.put_line(FND_FILE.output,v_disp_output);
    FOR STAFF_VAR IN STAFF LOOP
    L_ELEMENT_ENTRY_ID:=null;
    begin
    select assign.assignment_id,assign.effective_start_date into
    l_assignment_id,l_change_date_new
    from per_people_f peo,per_assignments_f assign
    where peo.person_id=assign.person_id
    and sysdate between peo.effective_start_date and peo.effective_end_date
    and sysdate between assign.effective_start_date and assign.effective_end_date
    and current_employee_flag='Y'
    and primary_flag='Y'
    and peo.business_group_id=l_business_group_id
    and peo.employee_number=staff_var.employee_no;
    L_CHANGE_DATE_new:=L_CHANGE_DATE;
    --L_CHANGE_DATE_new:=STAFF_VAR.v_effective_start_date;
    begin
    HR_MAINTAIN_PROPOSAL_API.INSERT_SALARY_PROPOSAL
    P_PAY_PROPOSAL_ID=>L_PAY_PROPOSAL_ID
    ,P_ASSIGNMENT_ID=>staff_var.ASSIGNMENT_ID
    ,P_BUSINESS_GROUP_ID=>staff_var.BUSINESS_GROUP_ID
    ,P_CHANGE_DATE=>L_CHANGE_DATE_new
    ,P_PROPOSED_SALARY_N=>STAFF_VAR.basic_salary
    ,P_OBJECT_VERSION_NUMBER=>STAFF_VAR.OBJECT_VERSION_NUMBER
    ,p_multiple_components=>L_MULTI
    ,p_approved=>L_APPROVED
    ,P_VALIDATE=>false
    ,p_element_entry_id =>L_ELEMENT_ENTRY_ID
    ,P_INV_NEXT_SAL_DATE_WARNING=>l_common
    ,P_PROPOSED_SALARY_WARNING=>L_COMMON
    ,P_APPROVED_WARNING=>L_COMMON
    ,P_PAYROLL_WARNING=>L_COMMON
    but we are getting the error Cause: FDPSTP failed due to ORA-01839: date not valid for month specified
    ORA-06512: at "APPS.XXAL_BASIC_SAL_INCREMENT_PKG1", line 45
    ORA-06512: at line 1
    we tried the solution available in the metalink still its giving error ..
    pl help us to solve this issue ...
    how should we pass the date parameter while we run the concurrent program(we used date value set).
    also we tried with some other value set also ..
    Regards,
    kumar

    dear,
    I have the following code to create proposal, but the API create salary proposal for all record s and does not create entry for all records it just creates for the first record
    any advice
    the code ....
    /* Formatted on 2007/08/29 16:20 (Formatter Plus v4.8.8) */
    ----------------------- P R O P O S A L -------------------------
    DECLARE
    l_rows_processed NUMBER := 0;
    l_commit_point NUMBER := 500;
    l_business_group_id NUMBER
    := fnd_profile.VALUE ('PER_BUSINESS_GROUP_ID');
    l_proposal_salry NUMBER;
    l_approved CHAR (1);
    l_rowid VARCHAR2 (30);
    l_errmessage VARCHAR2 (400);
    l_entry_indecator NUMBER;
    l_assignment_id NUMBER;
    p_ctr_object_version_number NUMBER;
    -- Out Parameters --
    l_element_entry_id NUMBER;
    p_element_entry_id NUMBER;
    l_ctr_object_version_number NUMBER;
    l_pay_proposal_id NUMBER;
    l_inv_next_sal_date_warning BOOLEAN;
    l_proposed_salary_warning BOOLEAN;
    l_approved_warning BOOLEAN;
    l_payroll_warning BOOLEAN;
    CURSOR crs_dc_mn
    IS
    SELECT xdp.ROWID, xdp.assignment_id, xdp.change_date,
    xdp.proposal_reason, xdp.proposed_salary,
    xdp.assignment_number, xdp.employee_number, xdp.person_id,
    xdp.new_asg_id
    FROM apps.xx_dc_proposal xdp
    WHERE xdp.assignment_id <> -1
    AND xdp.processed = 'N'
    AND xdp.change_date =
    (SELECT MIN (xdc.change_date)
    FROM xx_dc_proposal xdc
    WHERE xdc.assignment_id = xdp.assignment_id
    AND xdc.processed = 'N')
    ORDER BY assignment_id, change_date ASC;
    pro_rcrd crs_dc_mn%ROWTYPE;
    CURSOR crs_dc_proposal1 (p_asg_id IN NUMBER)
    IS
    SELECT xdp.ROWID, xdp.assignment_id, xdp.change_date,
    xdp.proposal_reason, xdp.proposed_salary,
    xdp.assignment_number, xdp.employee_number, xdp.person_id,
    xdp.new_asg_id
    FROM apps.xx_dc_proposal xdp
    WHERE xdp.assignment_id <> -1
    AND xdp.processed = 'N'
    AND xdp.assignment_id = p_asg_id
    ORDER BY assignment_id, change_date ASC;
    BEGIN
    OPEN crs_dc_mn;
    FETCH crs_dc_mn
    INTO pro_rcrd;
    LOOP
    BEGIN
    hr_maintain_proposal_api.insert_salary_proposal
    (p_pay_proposal_id => l_pay_proposal_id,
    p_assignment_id => pro_rcrd.assignment_id,
    p_business_group_id => l_business_group_id,
    p_change_date => pro_rcrd.change_date,
    p_comments => NULL,
    p_next_sal_review_date => NULL,
    p_proposal_reason => NULL,
    p_proposed_salary_n => pro_rcrd.proposed_salary,
    p_forced_ranking => NULL,
    p_performance_review_id => NULL,
    p_attribute_category => NULL,
    p_attribute1 => NULL,
    p_attribute2 => NULL,
    p_attribute3 => NULL,
    p_attribute4 => NULL,
    p_attribute5 => NULL,
    p_attribute6 => NULL,
    p_attribute7 => NULL,
    p_attribute8 => NULL,
    p_attribute9 => NULL,
    p_attribute10 => NULL,
    p_attribute11 => NULL,
    p_attribute12 => NULL,
    p_attribute13 => NULL,
    p_attribute14 => NULL,
    p_attribute15 => NULL,
    p_attribute16 => NULL,
    p_attribute17 => NULL,
    p_attribute18 => NULL,
    p_attribute19 => NULL,
    p_attribute20 => NULL,
    p_object_version_number => l_ctr_object_version_number,
    p_multiple_components => 'N', -- 918219
    p_approved => 'Y',
    p_validate => FALSE,
    p_element_entry_id => l_element_entry_id,
    p_inv_next_sal_date_warning => l_inv_next_sal_date_warning,
    p_proposed_salary_warning => l_proposed_salary_warning,
    p_approved_warning => l_approved_warning,
    p_payroll_warning => l_payroll_warning
    UPDATE xx_dc_proposal
    SET processed = 'Y'
    WHERE ROWID = pro_rcrd.ROWID;
    l_rows_processed := l_rows_processed + 1;
    IF l_rows_processed = l_commit_point
    THEN
    COMMIT;
    l_rows_processed := 0;
    END IF;
    EXCEPTION
    WHEN OTHERS
    THEN
    l_errmessage := SQLERRM;
    UPDATE xx_dc_proposal
    SET err_message = l_errmessage
    WHERE ROWID = pro_rcrd.ROWID;
    END;
    END LOOP;
    CLOSE crs_dc_mn;
    COMMIT;
    END;
    ..............................

  • Passing a list into a sql procedure via a unix shell.

    9.2.0.6
    for some dumb reason we cannot use java to do this task.
    anyways
    I need to build a list of all file in a particular directory. The list could be zero to very very long. I would like to be able to pass that list to a PL/SQL procedure.
    this is in unix
    I think I could do something like
    var=f1,f2,f3,f4
    sqlplus blah/blah $var
    exec my_proc(&var);
    I guess that would handle up to 32k in length. It would be up to me to parse the list.
    I am really looking for an way to do this a bit slicker.. like with a ref cursor but I seem to be getting stuck.
    Thanks

    Some examples here :
    Re: How to pass Character parameter
    Nicolas.

Maybe you are looking for