Procedure to execute other procedures in a package

I have written the following package:
CREATE
OR REPLACE PACKAGE NCI_LOAD_PKG AS
PROCEDURE LOAD_W;
PROCEDURE LOAD_X;
PROCEDURE LOAD_Y;
PROCEDURE LOAD_Z;
END NCI_LOAD_PKG;
I want to know what is the best way to call these procedures. Do I need to wirte a Unix script for this or just a pls procedure in the package itself. Also keeping in consideration that this package needs to run every night. I am not sure what I need to do. If anyone can give me some direction it will be very helpful.
Thanks.
Message was edited by:
rap1108
Message was edited by:
rap1108

You can call a packaged procedure from PL/SQL just by prefixing the package name, i.e.
BEGIN
  <<package name>>.<<procedure name>>( <<argument list>> );
END;If you create a procedure in the package, though, you can call other procedures in the same package without qualifying the procedure name with the package name.
Justin

Similar Messages

  • Calling procedure in other procedure

    Is it possible to call a procedure in any other procedure (via Jython) in more simple way than with using oracle.odi.sdk.invocation package ??
    Edited by: kumper on 2008-10-01 03:56

    Hi Kumper,
    I try to contribute a little.
    you can call an procedure by the following way:
    create the package pack1 and put the procedure P1 to be called in another proceure with variables used in that.
    generate the scenario for that pack1
    then you can call the pack1 scenario in the P2 procedure (this would obviously call the P1 procedure)
    does it make a sense
    Thanks,
    Madha

  • Unable to execute a procedure via an odbc dsn

    Hi forum,
    I'm facing an unique problem.
    When I execute a procedure (through sql advantage) that has a call to another procedure on a remote server, it works fine.But when I connect to sybase server via an ODBC or OLEDB dsn, it displays a message as "Login to site '%S_SRVID' failed". The connection works perfect when i execute other procedures that do not have a call to any remote procedure.
    If anybody can help...

    Oops, missed SQL Server thing. You are on erong forum. Anyway, to execute it in SQL Server use:
    execute process_040_series '01-OCT-09','31-OCT-09'SY.

  • Error while executing a procedure in Package

    ORA-04068: existing state of packages has been discarded
    ORA-04061: existing state of package "PLLODS.LK" has been invalidated
    ORA-04065: not executed, altered or dropped package "PLLODS.LK"
    ORA-06508: PL/SQL: could not find program unit being called
    ORA-06512: at line 1Why did this error arise when I changed a package and recompiled?

    This errors occurs when a package was executed in session A, compiled in session B, and then executed again in session A. The package executed in session A is in Oracle buffer, but its definition was changed in session B (which session A is unaware of). Now session A uses the old definition of the package but Oracle checks what is in buffer to the new definition and finds a difference. Therefore, it generates an error:
    ORA-04068: existing state of packages has been discarded
    and other related errors.
    Just execute the procedure (in the package) again and you should not see the error again.
    Make sure the stae of the package is valid, that is, when it was recompiled, the package compiled successfully.
    Shakti
    http://www.impact-sol.com
    Developers of Guggi Oracle - Tool for Developers and DBAs

  • Executing A Procedure In a Package Using DBLink

    I need to execute a procedure which is residing in a package using dblink.
    The package got a execute PUBLIC grant.
    When I execute the following statement, I am getting error ORA: 00904, Invalid Identifier
    select PKG_NAME.PROCEDURE_NAME@dblink(null,null,null,null,null,null,null,null,null,null,null) from dual
    How can I execute the above statement.
    Thanks in advance

    I have a database INLABNEW in that i have done this
    SQL> create table temp(no number)
      2  /
    Table created.
    SQL> create or replace package pkg
      2  as
      3     procedure p;
      4  end;
      5  /
    Package created.
    SQL>  create or replace package body pkg
      2   as
      3      procedure p
      4      is
      5      begin
      6             insert into temp values(1);
      7      end;
      8   end;
      9  /
    Package body created.
    SQL> select * from temp
      2  /
    no rows selectedNow i executed the procedure pkg.p from another database
    SQL> exec pkg.p@to_inlabnew
    PL/SQL procedure successfully completed.
    SQL> commit
      2  /And i query the table tmp in INLABNEW
    SQL> select * from temp
      2  /
            NO
             1Now question is have you given your procedure name properly.
    as your procedure is in a package it should be Your_package_name.Your_procedure_name@Your_db_link

  • Executing a procedure in package

    Hi,
    How to execute a procedure in a package? Below is the package
    CREATE OR REPLACE PACKAGE BODY POPULATE_GLTD_TABLES
    IS
    -- LOCAL VARIABLES
    val1 VARCHAR2(10);
    -- Create some job objects:
    v_job1_str VARCHAR2(4000) ;
    v_job1 XXMCK.XXMCK_JOB_OT;
    PROCEDURE populate_gltd_tabs1
    IS
    BEGIN
    dbms_output.put_line('Get_status=> v_job1: ');
    val1:= F_CHECK_GLTD_RECORD_EXISTS('MCK_GLTD_1');
    IF val1 != 'S' THEN
    -- Include message details value - TRUE if yes and FALSE if no
    xxmck.mck_write_log_msg.set_msg_tail(TRUE);
    xxmck.mck_write_log_msg.purge('GLTD-TASK1');
    -- set context will define the source as well as inserts data into cont exit table
    xxmck.mck_write_log_msg.set_context(v_parent_program,v_prog_desc,'GLTD-TASK1');
    xxmck.mck_write_log_msg.log(v_parent_program,'Entering in LOAD_GLTD_TABLES.populate_gltd_tabs1 ','prg','GLTD-TASK1',1);
    xxmck.mck_write_log_msg.log_tail(v_parent_program,'Entering in LOAD_GLTD_TABLES.populate_gltd_tabs1 ','prg','GLTD-TASK1');
    v_job1_str := 'XXCOGNOS.LOAD_GLTD_TABLES.populate_gltd_tabs1;';
    v_job1 := NEW XXMCK.XXMCK_JOB_OT('GLTD-TASK1', v_job1_str, 'Background job test: LOAD_GLTD_TABLES.populate_gltd_tabs1', INTERVAL '60' SECOND);
    v_job1.PRINT(); -- Display basic info about the job
    v_job1.SUBMIT(); -- Submit in background
    v_job1.WAIT();
    v_job1.PRINT();
    v_job1.get_status(v_code, v_message);
    dbms_output.put_line('Get_status=> v_job1: ' || v_code || ':' || v_message);
    -- SELECT DECODE(cont_exit, 'cont', 'cont', 'err', 'err', 'cont') INTO v_result from MCK_LOG_CONT_EXIT_CHK WHERE source = 'GLTD-TASK1';
    --IF v_result = 'err' THEN
    -- raise_application_error(-20000,'Program Aborted');
    --END IF;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END populate_gltd_tabs1;
    PROCEDURE mainproc
    IS
    BEGIN
    populate_gltd_tabs1; -- CALL TO POPULATE mck_gltd_1 TABLE
    -- Mailing
    xxmck.mck_write_log_msg.send_mail( p_source_prg => v_parent_program
    ,p_source => 'GLTD-TASK1'
    ,p_msg_type => 'prg'
    ,p_from => '[email protected]'
    ,p_to => '[email protected]'
    ,p_server => 'mailhub.mckinsey.com'
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END mainproc;
    END POPULATE_GLTD_TABLES;
    And below is my anonymous block to execute above package
    BEGIN
    POPULATE_MCK_GLTDFILE.mainproc;
    EXCEPTION -- exception handler begin
    WHEN OTHERS THEN NULL;
    END;
    I am trying to run above code in toad. But i am getting error as: identifier 'POPULATE_MCK_GLTDFILE.mainproc' must be declared.
    There are no parameters to be passed.
    The package is compiled successfully.
    I think this must be simplest question any one can I ask, but I cant figure out the solution.
    Please help,
    Aditya

    First remove the horrible exception handler(s) which are hiding all errors;
    ie the
    when others
    then
    null;
    end;Then remember the main syntax is
    begin
    packagename.procedurename;
    end;
    /But also remember that procedure name must be declared in the package header if you want to call it. (This is called a public procedure). A private procedure does not have to be declared in the package header and can only be called from within the same package body.
    I always use sqlplus for verification as that is delivered with oracle. You know if it works with sqlplus it will work with any othere client and if it does not, it's usually a client issue.
    from what you have posted, There is nothing obvious as to why it won't work.

  • SSIS package fails when it is executed by procedure (2008)

    Hi there,
    I have a very anoying problem with SSIS. I've done new packages into same project, almost identical compared to old ones. They work well in visual studio, but I can't execute them using procedure. Old packages works just fine, but none of the new. Error
    message is in the end of my story.
    Visual Studio version is 9.0.30729.1 and SQL Server version is 10.0.4000.0. Is it possible, that these not not updated versions could cause this problem?
    Package ProtectionLevel is DonSaveSensitive.
    Br,
    Ville
    Error messages, when package is executed by procedure:
    Microsoft (R) SQL Server Execute Package Utility
    Version 10.50.1600.1 for 64-bit
    Copyright (C) Microsoft Corporation 2010. All rights reserved.
    NULL
    Started:  10:36:48 AM
    Error: 2015-03-31 10:36:48.48
       Code: 0xC0016016
       Source:  
       Description: Failed to decrypt protected XML node
    "DTS:Password" with error 0x8009000B "Key not valid for use in
    specified state.". You may not be authorized to access this information.
    This error occurs when there is a cryptographic error. Verify that
     the correct key is available.
    End Error
    Progress: 2015-03-31 10:36:48.65
       Source: Data Flow Task 1
       Validating: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:48.81
       Source: Data Flow Task 1
       Validating: 50% complete
    End Progress
    Progress: 2015-03-31 10:36:48.81
       Source: Data Flow Task 1
       Validating: 100% complete
    End Progress
    Progress: 2015-03-31 10:36:48.82
       Source: Data Flow Task 1
       Validating: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:48.88
       Source: Data Flow Task 1
       Validating: 50% complete
    End Progress
    Progress: 2015-03-31 10:36:48.89
       Source: Data Flow Task 1
       Validating: 100% complete
    End Progress
    Progress: 2015-03-31 10:36:48.89
       Source: Data Flow Task 1
       Prepare for Execute: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:48.89
       Source: Data Flow Task 1
       Prepare for Execute: 50% complete
    End Progress
    Progress: 2015-03-31 10:36:48.89
       Source: Data Flow Task 1
       Prepare for Execute: 100% complete
    End Progress
    Progress: 2015-03-31 10:36:48.95
       Source: Data Flow Task 1
       Pre-Execute: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:49.03
       Source: Data Flow Task 1
       Pre-Execute: 50% complete
    End Progress
    Warning: 2015-03-31 10:36:49.03
       Code: 0x80070003
       Source: Data Flow Task 1 Destination - tb_month_standard_idx_table_exp_032013-082013_20140307_csv
    [34]
       Description: The system cannot find the path specified.
    End Warning
    Progress: 2015-03-31 10:36:49.28
       Source: Error Msg
       Executing query "insert into
    focusbase.dbo.tb_ctrl_package_error_ms...".: 100% complete
    End Progress
    Error: 2015-03-31 10:36:49.28
       Code: 0xC020200E
       Source: Data Flow Task 1 Destination -
    tb_month_standard_idx_table_exp_032013-082013_20140307_csv [34]
       Description: Cannot open the datafile
    "D:\Procogs_export_validation\StandardSetup\tb_month_standard_idx_table_exp_032013-082013_20140307.csv".
    End Error
    Progress: 2015-03-31 10:36:49.29
       Source: Error Msg
       Executing query "insert into
    focusbase.dbo.tb_ctrl_package_error_ms...".: 100% complete
    End Progress
    Error: 2015-03-31 10:36:49.29
       Code: 0xC004701A
       Source: Data Flow Task 1 SSIS.Pipeline
       Description: component "Destination -
    tb_month_standard_idx_table_exp_032013-082013_20140307_csv" (34) failed
    the pre-execute phase and returned error code 0xC020200E.
    End Error
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Pre-Execute: 100% complete
    End Progress
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Post Execute: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Post Execute: 50% complete
    End Progress
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Cleanup: 0% complete
    End Progress
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Cleanup: 50% complete
    End Progress
    Progress: 2015-03-31 10:36:49.29
       Source: Data Flow Task 1
       Cleanup: 100% complete
    End Progress
    DTExec: The package execution returned DTSER_FAILURE (1).
    Started:  10:36:48 AM
    Finished: 10:36:49 AM
    Elapsed:  0.905 seconds
    NULL<o:p></o:p>
    <o:p> </o:p>
    <o:p> </o:p>

    Hi,
    That path is not in use?! Yes, it is in error, but not in package. Maybe it has been there before, but now I can't find it. Or actually, path is valid, but not the file name.
    I had on error in package configuration file path, but here is the latest error message:
    Br,
    Ville
    Microsoft (R) SQL Server Execute Package Utility
    Version 10.50.1600.1 for 64-bit
    Copyright (C) Microsoft Corporation 2010. All rights reserved.
    NULL
    Started:  1:50:59 PM
    Error: 2015-03-31 13:50:59.38
       Code: 0xC0016016
       Source:  
       Description: Failed to decrypt protected XML node
    "DTS:Password" with error 0x8009000B "Key not valid for use in
    specified state.". You may not be authorized to access this information.
    This error occurs when there is a cryptographic error. Verify that
     the correct key is available.
    End Error
    Progress: 2015-03-31 13:50:59.56
       Source: Data Flow Task 1
       Validating: 0% complete
    End Progress
    Progress: 2015-03-31 13:50:59.72
       Source: Data Flow Task 1
       Validating: 50% complete
    End Progress
    Progress: 2015-03-31 13:50:59.72
       Source: Data Flow Task 1
       Validating: 100% complete
    End Progress
    Progress: 2015-03-31 13:50:59.73
       Source: Data Flow Task 1
       Validating: 0% complete
    End Progress
    Progress: 2015-03-31 13:50:59.79
       Source: Data Flow Task 1
       Validating: 50% complete
    End Progress
    Progress: 2015-03-31 13:50:59.79
       Source: Data Flow Task 1
       Validating: 100% complete
    End Progress
    Progress: 2015-03-31 13:50:59.79
       Source: Data Flow Task 1
       Prepare for Execute: 0% complete
    End Progress
    Progress: 2015-03-31 13:50:59.79
       Source: Data Flow Task 1
       Prepare for Execute: 50% complete
    End Progress
    Progress: 2015-03-31 13:50:59.79
       Source: Data Flow Task 1
       Prepare for Execute: 100% complete
    End Progress
    Progress: 2015-03-31 13:50:59.86
       Source: Data Flow Task 1
       Pre-Execute: 0% complete
    End Progress
    Progress: 2015-03-31 13:50:59.92
       Source: Data Flow Task 1
       Pre-Execute: 50% complete
    End Progress
    Warning: 2015-03-31 13:50:59.92
       Code: 0x80070003
       Source: Data Flow Task 1 Destination -
    tb_month_standard_idx_table_exp_032013-082013_20140307_csv [34]
       Description: The system cannot find the path specified.
    End Warning
    Progress: 2015-03-31 13:51:00.17
       Source: Error Msg
       Executing query "insert into
    focusbase.dbo.tb_ctrl_package_error_ms...".: 100% complete
    End Progress
    Error: 2015-03-31 13:51:00.17
       Code: 0xC020200E
       Source: Data Flow Task 1 Destination -
    tb_month_standard_idx_table_exp_032013-082013_20140307_csv [34]
       Description: Cannot open the datafile
    "D:\Procogs_export_validation\StandardSetup\tb_month_standard_idx_table_exp_032013-082013_20140307.csv".
    End Error
    Progress: 2015-03-31 13:51:00.17
       Source: Error Msg
       Executing query "insert into
    focusbase.dbo.tb_ctrl_package_error_ms...".: 100% complete
    End Progress
    Error: 2015-03-31 13:51:00.17
       Code: 0xC004701A
       Source: Data Flow Task 1 SSIS.Pipeline
       Description: component "Destination -
    tb_month_standard_idx_table_exp_032013-082013_20140307_csv" (34) failed
    the pre-execute phase and returned error code 0xC020200E.
    End Error
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Pre-Execute: 100% complete
    End Progress
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Post Execute: 0% complete
    End Progress
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Post Execute: 50% complete
    End Progress
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Cleanup: 0% complete
    End Progress
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Cleanup: 50% complete
    End Progress
    Progress: 2015-03-31 13:51:00.17
       Source: Data Flow Task 1
       Cleanup: 100% complete
    End Progress
    DTExec: The package execution returned DTSER_FAILURE (1).
    Started:  1:50:59 PM
    Finished: 1:51:00 PM
    Elapsed:  0.858 seconds
    NULL<o:p></o:p>

  • How to execute private procedures in a package

    Hi
    I have created private procedures in a package.
    now i want to execute the private procedure. how to execute the private one

    Hi;
    Pelase see below which could be helpful for your issue:
    Private procedures in a package
    http://stackoverflow.com/questions/924490/how-do-i-execute-private-procedures-in-an-oracle-package
    Regard
    Helios

  • Execute all procedures in a package

    Pls tell me how to execute all the functions and procedures in a Package in a single shot or is there any coding for the same
    Please help me
    Thanks in advance

    You would need to have a procedure or function in the package that ran all of the others. Given a package like:
    CREATE PACKAGE p AS
       FUNCTION f1 RETURN NUMBER;
       FUNCTION f2 RETURN NUMBER;
       PROCEDURE p1;
       PROCEDURE p2;
       PROCEDURE RUN_ALL;
    END;
    CREATE PACKAGE BODY p AS
    FUNCTION f1 RETURN NUMBER IS
    BEGIN
       RETURN 1;
    END; -- f1
    FUNCTION f2 RETURN NUMBER IS
    BEGIN
       RETURN 2;
    END; -- f2
    PROCEDURE p1 IS
    BEGIN
       NULL;
    END; -- p1
    PROCEDURE p2 IS
    BEGIN
       NULL;
    END; -- p2
    PROCEDURE RUN_ALL IS
       l_f1 NUMBER;
       l_f2 NUMBER;
    BEGIN
       l_f1 := f1();
       l_f2 := f2();
       p1;
       p2;
    END; -- run_all
    END; -- package bodyThen you would run all the procedures and functions by calling
    p.run_all;If you will never wnat to run the other procedures and function individually, then you could define the package spec as:
    CREATE PACKAGE p AS
       PROCEDURE RUN_ALL;
    END;HTH
    John

  • Package is not executing its procedure...

    I have an issue while executing following package. I have observed that procedure pr_order2 and may be procedure pr_order3 does not execute...
    CREATE OR REPLACE PACKAGE pk_orders
    IS
       PROCEDURE pr_order_logs;
       PROCEDURE pr_order5;
       PROCEDURE pr_order4;
       PROCEDURE pr_order3;
       PROCEDURE pr_order2;
       PROCEDURE pr_order1;
    END pk_orders;
    CREATE OR REPLACE PACKAGE BODY PAYE_FILE_DATA.pk_emp_purge
    IS
    PROCEDURE pr_order_logs is
         PRAGMA AUTONOMOUS_TRANSACTION;
         loging procedure...;
    end;
    PROCEDURE pr_order5 is
    some update statements...;
    end;
    PROCEDURE pr_order4 is
    some insert statements...;
    calling pr_order5();
    end;
    PROCEDURE pr_order3 is
    some insert statements....;
    calling pr_order4();
    end;
    PROCEDURE pr_order2 is
    some insert statements....;
    calling pr_order3();
    end;
    PROCEDURE pr_order1 is
    some execute immediate statements & insert statements....;
    calling pr_order2();
    end;
    /The calling method is pk_orders.pr_order1(); from sql script.
    The pr_order_logs procedure logs the event for pk_orders package. It inserts the log data/exception data into log table. As per the log it does not report any error.
    Every procedure has commit statement in the end.
    When I execute procedure individually it executes all inside statements correctly. However, as a package it doesn't.
    Please advice what could be the possible reasons...
    Thanks in advance.

    Are there any errors being logged by that error loggin procedure?
    If an exception handler doesn't "RAISE" the exception then they tend to be hidden from view so you often don't realise that something is not working and often don't get to see the real error message.

  • Result of Executing a Procedure in a Package to check if a file exists

    Hi,
    I have a procedure where i want to check if a name exists in my Oracle Table , for exemple , select name from my_files_processed , if the statement give a result , escape a step and go back to the previous step in the package , if the file doesn't exist in my table go to the next step in my package.
    Any issue on how to do this ??
    Best Regards

    First remove the horrible exception handler(s) which are hiding all errors;
    ie the
    when others
    then
    null;
    end;Then remember the main syntax is
    begin
    packagename.procedurename;
    end;
    /But also remember that procedure name must be declared in the package header if you want to call it. (This is called a public procedure). A private procedure does not have to be declared in the package header and can only be called from within the same package body.
    I always use sqlplus for verification as that is delivered with oracle. You know if it works with sqlplus it will work with any othere client and if it does not, it's usually a client issue.
    from what you have posted, There is nothing obvious as to why it won't work.

  • Java Stored Procedure in EXECUTE IMMEDIATE

    Hi,
    I need advice for the following.
    I'm on Oracle 11g R2. I'm testing application in Oracle 11gR1 and R2 and Oracle Express.
    Purpose is to generate XML reports.
    I have PLSQL Stored Procedure which does that, but since there is bug in Oracle11gR2 related to XMLTRANSFORM I have and Java Stored Procedure which is workaround. They are both compiled, valid etc.
    Java class is :
    import java.io.PrintWriter;
    import java.io.Writer;
    import oracle.xml.parser.v2.DOMParser;
    import oracle.xml.parser.v2.XMLDocument;
    import oracle.xml.parser.v2.XSLProcessor;
    import oracle.xml.parser.v2.XSLStylesheet;
    * This class is used as Java stored procedure
    * There is a bug on Oracle11gR2, related to the limitation on the number of style sheet instructions
    * This stored procedure is workaround when PLSQL code can not be used.
    * File must not have package, otherwise is wrongly compiled in DB
    public class JavaXslt {
         public static void XMLTtransform(oracle.sql.CLOB xmlInput,oracle.sql.CLOB xslInput,oracle.sql.CLOB output) throws Exception{
              DOMParser parser;
              XMLDocument xml;
              XMLDocument xsldoc;
              try{
                   parser = new DOMParser();
                   parser.parse(xmlInput.getCharacterStream());
                   xml = parser.getDocument();
                   parser.parse(xslInput.getCharacterStream());
                   xsldoc = parser.getDocument();
                   XSLProcessor processor = new XSLProcessor();
                   XSLStylesheet xsl = processor.newXSLStylesheet(xsldoc);
                   Writer w = output.setCharacterStream(1L);
                   PrintWriter pw = new PrintWriter(w);
                   processor.processXSL(xsl, xml, pw);
              }catch (Exception ex){
                   throw ex;
    PROCEDURE Java_XmlTransform (xml CLOB, xslt CLOB, output CLOB) AS LANGUAGE JAVA
    NAME 'JavaXslt.XMLTtransform(oracle.sql.CLOB, oracle.sql.CLOB, oracle.sql.CLOB)';
    I'm calling Java stored procedure from PLSQL Stored procedure (if it is Oracle11gR2) like that :
    Java_Proc.Java_XmlTransform(inputXML, xslt, res);
    So till here everything works ok. XSLT as applied and output XML (res) is OK.
    But when Oracle Express is used Java is out of the question, so there is no Java stored procedure. Howewer PLSQL Stored procedure is still needed.
    So I had to put call to Java Stored procedure in EXECUTE IMMEDIATE statement in order to compile to PLSQL package.
    But when I do that :
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING inputXML, xslt, res;
    result value CLOB (res) has zero length...
    What am I missing? Should i set return value to Java class?
    Hope my explanations are clear though.
    Thanks

    Hi odie_63,
    Thanks for quick response.
    I didn't clearly explained.
    When using Oracle 11gR1 and Oracle Express I'm using only PLSQL Procedure.
    When using Oracle 11gR2 i have to use Java Stored procedure because there is documented bug in R2.
    That's why i have to use EXECUTE IMMEDIATE. I don't know which version is the client DB and whether there is or no Java procedures.
    I did tried
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING IN inputXML, IN xslt, OUT res; and the result was ORA-06537: OUT bind variable bound to an IN position
    When using IN OUT for last parameter i.e.
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING IN inputXML, IN xslt, IN OUT res;
    there is no exception, but still DBMS_LOB.getlength(res) = 0
    Thanks

  • How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?

    Hi 
    I have a stored procedure. It can be executed like this
    exec test @p = 1;
    exec test @p = 2
    exec test @p = n;
    n can be hundred.
    I want the sp being executed in parallel, not sequence. It means the 3 examples above can be run at the same time.
    If I know the number in advance, say 3, I can create 3 different Execution SQL Tasks. They can be run in parallel.
    However, the n is not static. It is coming from a table. 
    How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?
    I think about using script task. In the script, I get the value of n, and the list of p, from the table, then running a loop with. In the loop, I create a threat and in the threat, I execute the sp like : exec test @p = p. So the exec test may
    be run parallel. But I am not sure if it works.
    Any idea is really appreciated.

    Hi nam_man,
    According to your description, you want to call stored procedures in parallel, right?
    In SSIS, we can create separate jobs with different stored procedures, then set the same schedule to kick the jobs off at the same time. In this way, we should be careful to monitor blocking and deadlocking depending on what the jobs are doing.
    We can also put all stored procedures in SSIS Sequence container, then they will be run in parallel.
    For more information about SSIS job and Sequence container, please refer to the following documents:
    http://www.mssqltips.com/sqlservertutorial/220/scheduling-ssis-packages-with-sql-server-agent/
    https://msdn.microsoft.com/en-us/library/ms139855(v=sql.110).aspx
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • How to execute a procedure depending on the result of a query?

    Hello, I'm new in ODI.
    I want to execute a procedure depending on the result of a query Oracle table.
    We have a Oracle Table whit a column that contains two possibles values.
    I want read the table, row by row, and depending on this value, execute a Procedure or execute another.
    How can i do?

    what you need to do is
    1. create a variable which "new_var2" which has the count of the number of rows you want to process. must be data type numeric.
    2. copy "new_var2" to the package screen.
    3. duplicate the "new_var2" on the package screen and evaluate the variable and test for "> 0" zero, call it "new_var2_E"
    3. create a new odi variable "new_var1" with a refresh of "select field1 fom (select field1,rownum as rownumber from tablex) where rownumber = #new_var2" in the relevant schema and technology.
    4. copy "new_var1" into your package (some where in the flow)
    5. right click the "new_var1" variable in you package screen and you should get the option duplicate step (click on that)
    6. select the the duplicate "new_var1" on the package screen and correct the the name to something meaning full to you "new_var1_E", also change the "type" to "evaluate variable" then you should see a "value" box. enter one of the values you want to test in the box (remember do not put in quotes ' )
    7. now back on the package screen join the "new_var1" to the "new_var1_E" with an OK line
    8 you now join "new_var2" to "new_var2_E" with OK
    9 you join "new_var2_E" to "new_var1"
    10. you then join the "new_var1_E" with an OK or a KO line to the relevant procedure.
    12. you need to duplicate "new_var2" in the package screen one more time this time and call it "new_var2_D" set the type to evaluate and then select the increment of -1
    13. the relevant procedure to "new_var2_D" with an OK
    14. join the "new_var2_D" to the "new_var2_E" with an OK
    15. this should close off the loop now the exit point is "new_var2_E" with a KO line to the next part of your process....
    Basically you should end up with a loop on new_var2 decementing, and it is used to get a specific next record row from your table.
    Hope this helps, sorry it is a little long winded..
    Edited by: DavidGD on Feb 8, 2009 3:29 PM

  • Invalid arguments error while executing oracle procedure

    Dear all,
    we have a table hr_emp with fields ecode, ename, edoj.
    the following procedure we created to return the table data to our .net app.
    CREATE OR REPLACE
    PACKAGE pname AS
    TYPE T_hr_cursor IS REF CURSOR;
    PROCEDURE get_hr_list (P_hrlist OUT T_hr_cursor);
    END HRPACK;
    create or replace PACKAGE BODY pname AS
         PROCEDURE get_hr_list (P_hrlist OUT T_hr_cursor)
         IS
         BEGIN
         OPEN P_hrlist FOR
              SELECT *
                   FROM Hr_Emp WHERE edoj>='01-jan-2009';
         END get_hr_list;
    END;
    these code edited in a single file [both package and package body] and created successfully.
    but, while executing, by typing execute get_hr_list, ORA-00304 error, invalid arguments, is coming. How to resolve this, please help.
    also, in sql developer 1.5.3, when we create this, another error is ciming like 'source doesnot have a runnable target'.
    Where is the issue? please help

    Yes, its great dear...
    sqlplus>
    declare
    hr_cursor hrmain.t_hr_cursor;
    begin
    pname.get_hr_list(hr_cursor);
    end;
    Its worked as i got 'pl/sql procedure successfully executed'.
    Also, then how i can call this get_hr_list procedure from .net? im using c# and i want to get the result of hr_emp to c#. how i can call the same from c#? any help please

Maybe you are looking for