Scheduled Job Call Package with OUT-Parameter

Hi,
I'd like to create a job using the scheduler. The procedure to be called is declared in a package and needs an out-parameter.
procedure transfer_pds2ddata(message out nocopy varchar2);Here the code I use to declare the job.
begin
  dbms_scheduler.create_job(
          job_name            => 'AUTOIMPORT',
          job_type            => 'stored_procedure',
          job_action          => 'ACCESSWRAP.transfer_pds2ddata',
          number_of_arguments => 1,
          start_date          => to_date('26-10-2010 10:45','DD-MM-YYYY HH24:MI'),
          repeat_interval     => 'FREQ=DAILY',
          end_date            => null,
          job_class           => 'DEFAULT_JOB_CLASS',
          enabled             => false,
          auto_drop           => true,
          comments            => null
  dbms_scheduler.set_job_argument_value(
    job_name => 'AUTOIMPORT',
    argument_position => 1,
    argument_value => ''
  dbms_scheduler.enable('AUTOIMPORT');
end;After the time specified I query user_scheduler_job_log. The Status column of the table says that the job failed. I think it has to do with the out parameter but I'm not sure.
Can anybody help with this?

Hi
can anyone revert to this query pls?

Similar Messages

  • Pl/sql procedure in package with out parameter

    Hi all,
    my need is to run procedure in package and return 0 or 1 as out parameter depending on data selection.
    How do I return value?
    My first guess is to use raise_application_error, but maybe some other decision can be found here.
    Looking forward to see your reply.
    Thanks ahead.

    Hi,
    marco wrote:
    Hi all,
    my need is to run procedure in package and return 0 or 1 as out parameter depending on data selection.
    How do I return value? Assign the desired value to the OUT parameter.
    My first guess is to use raise_application_error, but maybe some other decision can be found here. You can do it in an EXCEPTION handler, if that makes sense.
    Here's an example:
    CREATE OR REPLACE PROCEDURE     dept_comm
    (     in_deptno     IN     scott.emp.deptno%TYPE     -- Department of interest
    ,     out_comm     OUT     scott.emp.comm%TYPE     -- Total comm in that department
    ,     out_flag     OUT     NUMBER               -- 0 means there were no rows in table, 1 means there were
    AS
    BEGIN
         SELECT     SUM (comm),     COUNT (*)
         INTO     out_comm,     out_flag     -- See note (1) below
         FROM     scott.emp
         WHERE     deptno     = in_deptno;
         IF  out_flag  > 0     -- 0 and 1 are the only possible values for out_flag
         THEN
             out_flag := 1;               -- See note (2) below
         END IF;
    END     dept_comm;
    /This shows out_flag getting set 2 different ways:
    (1) in a SELECT ... INTO statement
    (2) in a normal assignment statement
    Any other way that you can use to assign a value to out_flag (such as passing it as an OUT argument to another procedure) would work as well.
    Edited by: Frank Kulash on Jan 31, 2012 1:27 PM

  • Call Procedure with OUT Parameter

    Hi,
    When I use an Procedure that has an OUT Parameter
    how can I use these OUT Parameter as an IN Parameter for an another Procedure.
    thanks
    Marcel

    Not sure, but is the following you after,
    SQL> create or replace procedure p1_out (a out number)
      2  as
      3  begin
      4  a := 10;
      5  end;
      6  /
    Procedure created.
    SQL> create or replace procedure p1_in (a in number)
      2  as
      3  begin
      4  dbms_output.put_line(a);
      5  end;
      6  /
    Procedure created.
    SQL> declare
      2  a number;
      3  begin
      4  p1_out(a);
      5  p1_in(a);
      6  end;
      7  /
    10
    PL/SQL procedure successfully completed.
    SQL>

  • Compile error at call Package with type parameter

    Hello!
    I have a problem.
    I have a package PKG_ARRAY_PARAMETER. This package has a procedure with an array parameter.
    PACKAGE PKG_ARRAY_PARAMETER IS
    -- Define Record and Record-Table (array)
    TYPE my_rec is record
    ( v_column1 VARCHAR2(5));
    --Array from my_rec
    TYPE my_rec_table is table of my_rec
    INDEX BY BINARY_INTEGER;
    v_rectable my_rec_table;
    PROCEDURE my_array_proc(p_array my_rec_table);
    END;
    PACKAGE BODY PKG_ARRAY_PARAMETER AS
    PROCEDURE my_array_proc (p_array my_rec_table)IS
    v_index BINARY_INTEGER;
    v_count number;
    BEGIN
    v_count := 1;
    END;
    END;
    The package compiled without errors.
    The problem ist the call of the package procedure.
    DECLARE
         -- Define Record and Record-Table (array)
    TYPE my_rec is record
    ( v_column1 VARCHAR2(5));
    --Array from my_rec
    TYPE my_rec_table is table of my_rec
    INDEX BY BINARY_INTEGER;
    v_rectable my_rec_table;
    BEGIN
         v_rectable(1).v_column1:='aaa';
         PKG_ARRAY_PARAMETER.my_array_proc(v_rectable);
    --null;     
    END;
    I get the error "Error 306.... wrong number or types of arguments in call to 'MY_ARRAY_PROC'"
    Can anybody help me. I have no idea wh I get this error.
    Thanks

    As you have discovered, even if the definitions are identical Oracle treats them as different objects. I recommend "Oracle PL/SQL Programming" by Steven Feuerstein which has a couple of chapters on collections and specifically warns against this.
    I have that section bookmarked as I can never remember how to manipulate collections.

  • Execute procedure with out parameter in sql*plus

    HI All,
    I am executing an stored proc with OUT parameter from sql*plus.
    Getting this error message:
    SQL> execute sp1_cr_ln_num('01',0,3);
    BEGIN sp1_cr_ln_num('01',0,3); END;
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to
    'sp1_cr_ln_num'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Whereas it works fine using Toad. 4th parameter is for output.
    Thanks.

    then you can see the value either using print :var or execute dbms_output.put_line(:var)

  • Procedure with out parameter in if-then-else condition

    Hi,
    I want to fetch the out parameter of a procedure inside another procedure that has if-then-else condition.
    <<Proc1_start>>
    if ..
    then <<proc2_>> --- with out parameter
    end if;
    <<proc1_end>>
    How to do this...
    Thanks.

    Ummm, the same way you would do it anywhere else?
    Declare variable in proc1 to hold the output of proc2 and then call proc2.
    John

  • How to write a shell script to execute a procedure with out parameter

    Hi,
    How to write a shell script to execute a procedure with out parameter.
    here is my procedure
    PROCEDURE sample(invar1 VARCHAR2,
    invar2 VARCHAR2,
    invar3 VARCHAR2,
    invar4 VARCHAR2,
    ecode out number);
    Any example really helpfull
    Thanks in advance

    Or if we're passing values in, maybe something like:
    Test procedure:
    CREATE OR REPLACE PROCEDURE p (myin IN VARCHAR2, myout OUT VARCHAR2)
    AS
    BEGIN
        myout :=
            CASE myin
                WHEN 'A' THEN 'APPLE'
                WHEN 'B' THEN 'BANANA'
                ELSE 'STARFRUIT'
            END;
    END;Shell script:
    #!/bin/bash
    my_shell_variable=$1
    unset ORACLE_PATH
    sqlplus -s un/pw@db <<-EOF
    set feedback off pause off
    set pagesize 0
    set autoprint off
    VAR out varchar2(30)
    VAR myin varchar2(30)
    exec :myin := '${my_shell_variable}'
    BEGIN
      p(:myin, :out);
    END;
    print out
    exit
    EOFTest:
    /Users/williamr: xx A
    APPLE
    /Users/williamr: xx B
    BANANA
    /Users/williamr: xx
    STARFRUITObviously in a real script you would not hardcode the password or let it show in a "ps" listing.
    Message was edited by:
    William Robertson

  • Calling Oracle Stored procedure with OUT parameter from ODI

    Hi,
    I called an oracle stored procedure with following anonymous block in the ODI procedure.
    Declare
    Status varchar2(10);
    Begin
    OTM.DeleteTarget('E_KPI_TARGET_VALUE', Status);
    End;
    I want to capture the OUT parameter STATUS value in a project level variable.
    And based on its va;lue I would like to choose between 2 interfaces in my package.
    Please help me in doing this.

    Hi,
    For that kind of situation I commoly use:
    1) one step with:
    create or replace package <%=odiRef.getSchemaName("W")%>.pck_var
    Status varchar2(10);
    end;
    * transaction 9, for instance
    2) step
    Begin
    OTM.DeleteTarget('E_KPI_TARGET_VALUE', <%=odiRef.getSchemaName("W")%>.pck_var.Status);
    End;
    * transaction 9
    3) then, at an ODI variable, use a refresh like:
    select <%=odiRef.getSchemaName("W")%>.pck_var.Status from dual
    at same logical shema where the package was created.
    Does it make sense to you?

  • Error while calling a stored procedure with OUT parameter.

    Hi,
    I am trying to call a Stored Procedure(SP) with an OUT parameter(Ref Cursor) from a third party tool. It is called using OLE-DB Data provider. In one database the procedure works fine but when I change the database the procedure call is giving following error.
    Distribution Object:     COM Error. COM Source: OraOLEDB. COM Error message: IDispatch error #3092. COM Description: ORA-06550: line 1, column 7:
         PLS-00306: wrong number or types of arguments in call to 'TEST1'
         ORA-06550: line 1, column 7:
         PL/SQL: Statement ignored.
    I am not able to find as to why is this happening. Please let me know any clues /help to solve this problem.
    Thanks in advance.

    If you're using Oracle Provider for OLE DB (OraOLEDB) to execute this stored procedure, you need to set PLSQLRSet attribute. This attribute can be set in registry, connection string, or command object. Please refer to User Documentation for more information.

  • Calling a procedure from Oracle Forms with OUT parameter

    HI,
    Can anyone tell me in detail how to call a procedure with OUT parameters from Oracle Forms 6i ?
    Thanks in advance.

    Hello,
    Just provide the out parameter in the call:
    Declare
      amount   number; -- OUT number argument populated by the procedure
    Begin
      -- call the X procedure --
      x( amount ) ;
    End;Francois

  • Call stored procedure with OUT parameter

    Hello,
    I have created a short-lived process. Within this process I am using the "FOUNDATION > JDBC > Call Stored Procedure" operation to call an Oracle procedure. This procedure has 3 parameters, 2 IN and 1 OUT parameter.
    The procedure is being executed correctly. Both IN parameters receive the correct values but I am unable to get the OUT parameter's value in my process.
    Rewriting the procedure as a function gives me an ORA-01460 since one of the parameters contains XML (>32K) so this is not option...
    Has someone been able to call a stored procedure with an OUT parameter?
    Regards,
    Nico

    Object is Foundation, Execute Script
    This is for a query, you can change to a stored procedure call. Pull the value back in the Java code then put into the process variable.
    import javax.naming.InitialContext;
    import javax.sql.DataSource;
    import java.sql.*;
    PreparedStatement stmt = null;
    Connection conn = null;
    ResultSet rs = null;
    try {
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup("java:IDP_DS");
    conn = ds.getConnection();
    stmt = conn.prepareStatement("select FUBAR from TB_PT_FUBAR where PROCESS_INSTANCE_ID=?");
    stmt.setLong(1, patExecContext.getProcessDataLongValue("/process_data/@inputID"));
    rs = stmt.executeQuery();
    rs.next();
    patExecContext.setProcessDataStringValue("/process_data/outData", rs.getString(1));
    } finally {
    try {
    rs.close();
    } catch (Exception rse) {}
    try {
    stmt.close();
    } catch (Exception sse) {}
    try {
    conn.close();
    } catch (Exception cse) {}

  • About JDBC CALL STORE PROCEDURE with out parameter is greater than 4000

    Hi Guys,
    I have a problem call store procedure with a large string.
    as i know varchar2 can contain 32767 characters in pl/sql .
    But when i used varchar2 as a out parameter in a store procedure, if the out parameter is greater than 4000 characters , it always give me error message as 'the buffer is too small'.
    why it happened?
    I read some article that says i need configure a property in data-source.xml , and jdbc 10g driver already solved this problem, but i used jdev 10.1.3.2 ,the driver should be fine.
    How can i solve this problem?
    Thanks in advance,
    AppCat

    Object is Foundation, Execute Script
    This is for a query, you can change to a stored procedure call. Pull the value back in the Java code then put into the process variable.
    import javax.naming.InitialContext;
    import javax.sql.DataSource;
    import java.sql.*;
    PreparedStatement stmt = null;
    Connection conn = null;
    ResultSet rs = null;
    try {
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup("java:IDP_DS");
    conn = ds.getConnection();
    stmt = conn.prepareStatement("select FUBAR from TB_PT_FUBAR where PROCESS_INSTANCE_ID=?");
    stmt.setLong(1, patExecContext.getProcessDataLongValue("/process_data/@inputID"));
    rs = stmt.executeQuery();
    rs.next();
    patExecContext.setProcessDataStringValue("/process_data/outData", rs.getString(1));
    } finally {
    try {
    rs.close();
    } catch (Exception rse) {}
    try {
    stmt.close();
    } catch (Exception sse) {}
    try {
    conn.close();
    } catch (Exception cse) {}

  • Execute immediate for stored procedure with out parameter

    Hi,
    I have problem with dynamically executing the statement hope anyone can help me.
    I have a table which stores the procedure names. and procedure parameter values are stored on another column with parameter values coming from java side.
    I have to create a procedure that dynamically executes the procedure on table1 with the values from table 2.
    Now I'm getting real trouble to execute immediate this proc with parameters. I tried the DBMS_SQL package as well.
    Problem is you need to mention the OUT mode specifically for the out parameter. Can anybody plz help me with this issue??
    TABLE1_
    PROCESS_ID     PROC_NAME
    1      proc1(p1 IN number, p2 IN varchar2, p3 OUT varchar2)
    2     proc2(p1 IN number, p2 out varchar2, p3 OUT varchar2)
    TABLE2_
    PROCESS_ID     PROC_PARMS
    1     100, 'test', :return
    2     200, :return1, :return2
    Thank You

    826957 wrote:
    Hi,
    I have problem with dynamically executing the statement hope anyone can help me.
    I have a table which stores the procedure names. and procedure parameter values are stored on another column with parameter values coming from java side.
    I have to create a procedure that dynamically executes the procedure on table1 with the values from table 2.
    Now I'm getting real trouble to execute immediate this proc with parameters. I tried the DBMS_SQL package as well.
    Problem is you need to mention the OUT mode specifically for the out parameter. Can anybody plz help me with this issue??
    TABLE1_
    PROCESS_ID     PROC_NAME
    1      proc1(p1 IN number, p2 IN varchar2, p3 OUT varchar2)
    2     proc2(p1 IN number, p2 out varchar2, p3 OUT varchar2)
    TABLE2_
    PROCESS_ID     PROC_PARMS
    1     100, 'test', :return
    2     200, :return1, :return2
    Thank YouSounds like an appalling design and a nightmare waiting to happen.
    Why not have your Java just call the correct procedures directly?
    Such design smells badly of an entity attribute value modelling style of coding. Notoriously slow, notoriously buggy, notoriously hard to maintain, notoriously hard to read. It really shouldn't be done like that.

  • Invoking Stored Procedure with OUT Parameter

    I am calling a stored procedure that has a "out" parameter of PL/SQL type (table of varchar2) through toplink API. My procedure executes, performs the updates successfully, but I can not obtain the value of the out parameter. Is the approach followed below incorrect? I could not figure out by looking into examples provided in the documentation:
    http://download.oracle.com/docs/cd/B25221_04/web.1013/b25386/building_and_using_application_services009.htm#BCFEFAHC
    Java function is given below:
    public List removeFromAutoupdSched( List srNumbers, String userName)
    if (srNumbers == null || srNumbers.size() == 0)
    return null;
    List result = null;
    try
    //Example Stored procedure call with an output parameter
    DatabaseLogin login = m_dbSess.getLogin();
    Connection conn = (Connection) (java.sql.Connection)login.connectToDatasource(null);
    oracle.sql.ArrayDescriptor arrDesc = new oracle.sql.ArrayDescriptor("AUTOUPD_SRLIST_T", conn);
    oracle.sql.ARRAY srARR = new oracle.sql.ARRAY(arrDesc, conn, srNumbers.toArray());
    StoredProcedureCall procCall = new StoredProcedureCall();
    procCall.setProcedureName("SEW_AUTOUPD.PURGE_AUTOUPD_SCHEDULE");
    procCall.addNamedArgumentValue("excludeSRlist", srARR);
    procCall.addNamedArgumentValue("exclude_by", userName);
    procCall.addNamedOutputArgument(
    "excludeSR_srlist_status",
    "excludeSR_srlist_status",
    OracleTypes.ARRAY,
    "AUTOUPD_SRLIST_ERRS_T"
    ValueReadQuery vq = new ValueReadQuery();
    vq.setCall(procCall);
    oracle.sql.ARRAY srResultARR = (oracle.sql.ARRAY)m_dbSess.executeQuery(vq);
    if (srResultARR != null)
    String[] msgs = (String[])srResultARR.getArray();
    if (msgs.length > 0)
    result = Arrays.asList(msgs);
    Iterator iter = result.iterator();
    while (iter.hasNext())
    System.out.println("msg = " + iter.next());
    return result;
    catch (Exception exc)
    throw new RuntimeException(exc);
    PL/SQL Type
    create or replace TYPE autoupd_srlist_errs_t IS TABLE OF VARCHAR2(150);
    Sample procedure called by toplink:
    PROCEDURE purge_autoupd_schedule(
    excludeSRlist autoupd_srlist_t,
    exclude_by VARCHAR2,
    excludeSR_srlist_status OUT NOCOPY autoupd_srlist_errs_t)
    IS
    pkg sew_log.pkg_name%TYPE default upper('sew_autoupd');
    prc sew_log.prc_name%TYPE default upper('purge_autoupd_schedule(excludeSRlist, exclude_by)');
    srno NUMBER;
    -- cnt NUMBER := 0;
    exclude_status VARCHAR2(150);
    err_prefix VARCHAR2(50) := 'Unable to exclude from autoupdate, ';
    BEGIN
    FOR i IN excludeSRlist.FIRST..excludeSRlist.LAST
    LOOP
    BEGIN
    srno := excludeSRlist(i);
    -- Update actn_taken column in autoupd_schedule before doing delete.
    UPDATE autoupd_schedule SET actn_taken='Removed by engineer', UPD_TIME=systimestamp
    WHERE sr_no = srno and engr_itsid = exclude_by;
    -- Add SR to exclusion list.
    INSERT INTO autoupd_exclude(sr_no, exclude_by, exclude_time) VALUES (srno, exclude_by, systimestamp);
    exclude_status := 'Item ' || i || ' - SR ' || srno || ' - ' || 'Excluded from autoupdate.';
    excludeSR_srlist_status(i) := exclude_status;
    EXCEPTION
    WHEN others THEN
    -- Add SR to excludeSR_fail if previous steps occurred okay.
    -- cnt := cnt +1;
    exclude_status := 'Item ' || i || ' - SR ' || srno || ' - ' || err_prefix || substr(sqlerrm,12);
    excludeSR_srlist_status(i) := exclude_status;
    END;
    END LOOP;
    EXCEPTION
    WHEN others THEN
    sew_logger.log(
    code => substr(sqlerrm,1,9),
    msg => substr(sqlerrm,12),
    pkg => pkg,
    prc => prc
    END;
    Any help is appreciated.

    What happens if you run the stored procedure through pure jdbc (without TopLink)?
    I tried a simple example that worked for me:
    //defined type in the db
    CREATE TYPE "TEST"."VAR_LIST" AS  TABLE OF VARCHAR2(150)
    //defined stored procedure in the db
    CREATE OR REPLACE  PROCEDURE "TEST"."VAR_LIST_IN_OUT"  (
    VARS_IN VAR_LIST,
    VARS_OUT OUT NOCOPY VAR_LIST
    as
    begin
      VARS_OUT := VAR_LIST();
      FOR i IN VARS_IN.FIRST..VARS_IN.LAST LOOP
        VARS_OUT.EXTEND;
        VARS_OUT(i) := CONCAT(VARS_IN(i), '_BLAH');
      END LOOP;
    end;
    // Java code
    StoredProcedureCall call = new StoredProcedureCall();
    call.setProcedureName("VAR_LIST_IN_OUT");
    Connection conn = (Connection) ((oracle.toplink.internal.sessions.AbstractSession)getSession()).getAccessor().getConnection();
    oracle.sql.ArrayDescriptor arrDesc = new oracle.sql.ArrayDescriptor("VAR_LIST", conn);
    oracle.sql.ARRAY srARR = new oracle.sql.ARRAY(arrDesc, conn, new String[]{"A1", "A2", "A3"});
    call.addNamedArgumentValue("VARS_IN", srARR);
    call.addNamedOutputArgument("VARS_OUT", "VARS_OUT", Types.ARRAY, "VAR_LIST");
    ValueReadQuery query = new ValueReadQuery();
    query.setCall(call);
    Object result = getSession().executeQuery(query);
    Object[] array = (Object[])((java.sql.Array)result).getArray();
    for(int i=0; i<array.length; i++) {
        System.out.println(array);
    // System.out:
    [TopLink Finest]: 2008.04.25 15:37:16.687--DatabaseSessionImpl(3491657)--Thread(Thread[main,5,main])--Execute query ValueReadQuery()
    [TopLink Fine]: 2008.04.25 15:37:16.703--DatabaseSessionImpl(3491657)--Connection(29118152)--Thread(Thread[main,5,main])--BEGIN VAR_LIST_IN_OUT(VARS_IN=>?, VARS_OUT=>?); END;
         bind => [oracle.sql.ARRAY@323274, => VARS_OUT] (There is no English translation for this message.)
    A1_BLAH
    A2_BLAH
    A3_BLAH
    My stored procedure didn't work (on Oracle 9 db) without output collection initialization: VARS_OUT := VAR_LIST(); and extending: VARS_OUT.EXTEND.

  • Trouble with OUT parameter when creating a PL/SQL process on a HTML page

    I would like to call a stored procedure when creating process on a HTML page.
    I do know how to call the proc with the IN parameters,
    its the OUT parameter that I am having a problem with.
    ..basically getting "wrong number of arguments"
    ..the procedure parameters
    DELETECONFIG(p_configname IN,
    p_configtype IN,
    p_successmsg OUT)
    I have two items on the page for the
    configtype and configname..so my call when creating the process looks like this
    DELETECONFIG(P_CONFIGNAME => :CONFIGNAME_LIST,
    P_CONFIGTYPE => :CONFIGTYPE_LIST,
    not sure how to handle p_successmsg..
    thank you.

    thank you.
    This worked for me, where :P122_XDISPLAY is a display only text area withou a label.
    BEGIN
    DELETECONFIG(:P122_XCONFIGUSERID,
    :P122_XCONFIG_TYPE,
    :P122_XCONFIG_NAME,
    :P122_XDISPLAY);
    END;

Maybe you are looking for

  • IPhone 5 went into recovery mode trying to upgrade to iOS 8.1

    So last night i tried upgrading my iPhone 5(iOS 8.0.2) to iOS 8.1. Initially the phone hung up maybe due to network being slow and i rebooted my iPhone which took around 10 mins just to come back on and then took about 2 hours searching for my networ

  • Zen Jukebox 30G "Shutting Down" then ha

    I bought this unit about a month ago, and I am not very pleased with it so far. The biggest problem I encounter too often is when I power up the unit, it shuts down after playing for about 5 seconds. However, it hangs on the "Shutting Down" message,

  • Nokia N8 : Retrieve deleted pictures or files

    Hi... i was trying make a new album in photo's menu so i can keep all my fav in one folder. i copied pics from ALL to ALBUM's new folder and then deleted the same pics in ALL folder but automatically all the pics in new folder got deleted. normally i

  • How to hide the Play arrow when player is paused?

    Hi, I wanted to hide the Play arrow that appears in the middle of the screen when player is paused. Users often pause the player to examine a schema, diagram, or somewhat else, and in that case, this arrow may hide some image details. Thanks

  • Installing Application Server JAVA on SQL 2005

    We are looking to install a NW 7.0 system with Application Server Java only. We would like to install the SCS and the Central Instance on one host on a Windows 2008 64-bit server and the Database Instance on a seperate host. The DB host is a Windows