Package for a procedure or a function.

Hello expert,
I want to find out the package where a procedure or function is included. Appreciate very much!

SELECT * FROM user_procedures a WHERE a.object_name = 'YOUR_PACKAGE'and, since you know the procedure name
SELECT * FROM user_procedures a WHERE a.procedure_name = 'YOUR_PROCEDURE_NAME'Edited by: RPuttagunta on Apr 5, 2011 7:24 AM

Similar Messages

  • To find last updated date in sql developer for a procedure or a function

    hi
    how to to find last updated date in sql developer for a procedure or a function.
    i m using sql developer version in 1.2

    I think you are in the wrong forum...
    Anyway you can try
    select * from
    all_objects o
    where o.object_type in ('FUNCTION','PROCEDURE');
    you have there the created date, last DDL and timestamp

  • Configuration and Business Package for Learning Solutions

    Dear Experts,
    I need informtion on the configurations and Business Package for Learning Solutions 2(business function HCM_LSO_CI_2) which comes with EHP4. We need to implement the LSO functionalities and I was not able to find out the required Portal Business Package. Please share your experience for implementation of LSO.
    Regards,
    Samir

    Dear Experts,
    Anyone already done LSO Learning Solutions implementation for Ehp4.Please provide inputs.
    Regards,
    Samir

  • How to check performance for Stored procedure or Package.

    Hi ,
    Can any one please tell me , how to check performance for Stored procedure or Function or Package
    Thanks&Regards,
    Sanjeev.

    user13483989 wrote:
    Hi ,
    Can any one please tell me , how to check performance for Stored procedure or Function or Package
    Thanks&Regards,
    Sanjeev.Oracle has provided set of Tools to monitor the Performance.
    Profilers being one of them; If you wish to understand more on PL/SQL Optimization, please read PL/SQL Optimization and Tuning.
    See example of DBMS_PROFILER.
    See example of PLSQL Hierarchial Profiler

  • Counting the number of lines for each procedure in a package

    Hi,
    I would like to write a query on USER_SOURCE that can display the number of code lines for each procedure/function in a package.
    Is it possible to write such a query? Maybe by using analytical functions?
    for example in the following example i would like to count the lines between "PROCEDURE proc1 IS" and "END proc1;" and between "PROCEDURE proc2 IS" and "END proc2;"
    SQL> select text  from user_source where name='PKG_TEST' and type='PACKAGE BODY';
    TEXT
    PACKAGE BODY PKG_TEST IS
      PROCEDURE proc1 IS
      BEGIN
        update t1 set EDITION_NAME = 'AAAAAAA';
        commit;
      END proc1;
    PROCEDURE proc2 IS
      BEGIN
       update t1 set EDITION_NAME = 'AAAAAAA';
        commit;
      END proc2;
    END PKG_TEST;thanks for helping

    onedbguru wrote:
    Hopefully some idiot manager isn't trying to use this sort of thing to base their decisions on developer productivity. If so, they ARE idiots. Number of code lines NEVER, EVER, EVER!!! translates into an efficient application. If I were paid by the line, my code would look like:
    select
    1
    from
    dual
    Based on the idiocy of this method of determining "performance" I would get paid $5.00 at $1.00/line. And trust me, I saw this back in the 80's and 90's and saw similar idiotic code and had to clean up the mess. Most of it wasn't efficient code to start with let alone the number of lines generated.Or the other extreme, when the PHB firmly believed that execution efficiency was gained by reducing the number of lines of code. So instead of nicely formatted, easy to read code:
          *GET NEXT ORDER NUMBER                                                               
                EXEC SQL                                                                        
                     SELECT (MAX(ORDER_NUM) + 1)                                                
                     INTO   :NEXT-NUM:IND-NULL                                                  
                     FROM   PART_ORDER                                                          
                END-EXEC.                                                                       
                IF IND-NULL < 0                                                                 
                  MOVE 1 TO NEXT-NUM.                                                           
                EXEC SQL                                                                        
                     INSERT                                                                     
                     INTO    PART_ORDER                                                         
                            (ORDER_NUM,                                                         
                             ORIGIN_LOC,                                                        
                             ORDER_TYPE,                                                        
                             ORDER_STAT,                                                        
                             CREAT_TIME)                                                        
                     VALUES (:NEXT-NUM,                                                         
                             :LOC, 'R', 'O',                                                    
                             CURRENT TIMESTAMP)                                                 
                   END-EXEC.                                                                    
                MOVE NEXT-NUM TO MASK0.                                                         
                PERFORM HEADER-PROC THRU HEADER-EXIT.                                           
            CREATE-ORDER-EXIT. EXIT.                                                     You got this:
           *GET NEXT ORDER NUMBER
            EXEC SQL SELECT (MAX(ORDER_NUM) + 1) INTO :NEXT-NUM:IND-NULL FROM
            PART_ORDER END-EXEC. IF IND-NULL < 0 MOVE 1 TO NEXT-NUM. EXEC SQL INSERT
            INTO PART_ORDER (ORDER_NUM, ORIGIN_LOC, ORDER_TYPE, ORDER_STAT,
            CREAT_TIME) VALUES (:NEXT-NUM, :LOC, 'R', 'O', CURRENT TIMESTAMP)
            END-EXEC. MOVE NEXT-NUM TO MASK0. PERFORM HEADER-PROC THRU HEADER-EXIT.
            CREATE-ORDER-EXIT. EXIT.                 Oh, wait! See the same thing all the time in this forum ... not because someone thinks fewer lines = faster code, but simply because people are sloppy.
    INSERT INTO PART_ORDER(ORDER_NUM,ORIGIN_LOC,ORDER_TYPE,ORDER_STAT,CREAT_TIME) VALUES (:NEXT-NUM,:LOC, 'R', 'O',CURRENT TIMESTAMP) ;

  • How do you create a package for a function?

    Hello,
    Can someone tell me how to create a package for a function? My understanding is to call a function like a beforeReport from the data template, is that the function needs to be in a package.
    Thanks,
    Susan

    Create package my_pack as
    my_val varchar2(40);
    function before_rep(my_param in varchar2) return boolean;
    end my_pack;
    create package body my_pack as
    function before_rep(my_param in varchar2) return boolean is
    begin
    my_val := '1=1';
    return true;
    exception
    when others then
    return false;
    end before_rep;
    end my_pack;
    hope this helps.
    Marcos

  • SQL query statement  for stored procedure / function listing ...

    Hi everyone,
    Is there a SQL query to list all the stored procedures and functions of an user in an Oracle 8 database?
    I have this idea:
    select * from USER_SOURCE where TYPE = 'PROCEDURE' or TYPE = 'FUNCTION'
    but I am not too sure whether this is correct.
    Thanks in advance,
    Eric

    Yeah
    I agree with you Garcia , my above posting was a correction to the query mentioned in the question only.
    you are correct
    If you only want the name of the object,
    SELECT Object_Name from User_Objects where object_type in ( 'PROCEDURE' ,'FUNCTION');
    is much faster than Selecting (distinct) from User_Source.

  • Pl/sql package for use with workflow will not return a value

    hi all,
    just trying to intercept a requisition being turned into an order if it uses a certain cost code. so i have amended the workflow and created a package to check what cost centre a requisition is using. how over the workflow stops on the function that calls the package witha a status of complete as if the package is not returning any values.
    the package is as below:
    CREATE OR REPLACE PACKAGE APPS.xxhccWFcapitalcheck AS
    procedure XXHCC_CHECK_CAPITAL(itemtype in varchar2,
    itemkey in varchar2,
    actid in number,
    funcmode in varchar2,
    resultout out NOCOPY vARCHAR2);
    END xxhccWFcapitalcheck;
    CREATE OR REPLACE PACKAGE BODY APPS.xxhccWFcapitalcheck AS
    procedure XXHCC_CHECK_CAPITAL(itemtype in varchar2,
    itemkey in varchar2,
    actid in number,
    funcmode in varchar2,
    resultout out NOCOPY varchar2 ) is
    x_progress varchar2(100);
    x_resultout varchar2(30);
    l_doc_mgr_return_val VARCHAR2(1);
    l_doc_string varchar2(200);
    l_preparer_user_name varchar2(100);
    doc_manager_exception exception;
    p_test varchar2(100);
    l_req_id varchar2(30);
    CURSOR p_line_id IS
    SELECT
    codes.segment2 cost_center
    FROM
    po_requisition_headers_all headers,
    po_requisition_lines_all lines,
    po_req_distributions_all dist,
    gl_code_combinations_v codes
    WHERE
    headers.requisition_header_id = lines.requisition_header_id
    AND
    lines.requisition_line_id = dist.requisition_line_id
    AND
    dist.code_combination_id = codes.code_combination_id
    AND
    headers.segment1 = l_req_id;
    line_rec p_line_id%rowtype;
    BEGIN
    -- Do nothing in cancel or timeout mode
    --if (funcmode <> wf_engine.eng_run) then
    -- resultout := wf_engine.eng_null;
    -- return;
    -- end if;
    l_req_id := wf_engine.GetItemAttrNumber (itemtype => itemtype,
    itemkey => itemkey,
    aname => 'DOCUMENT_NUMBER');
    --FOR line_rec in p_line_id
    ---loop
    open p_line_id;
    fetch p_line_id into l_doc_string;
    close p_line_id;
    IF p_line_id= 'Q9DEF'
    dbms_output.put_line p_line_id;
    Then resultout := 'COMPLETE:F';
    return;
    p_test := 'USE DIFFERENT CODE';
    ELSE
    resultout := 'COMPLETE:T';
    return;
    END IF;
    END LOOP;
    end;
    END xxhccWFcapitalcheck;
    any help would be great!

    Hi Community,  first of all, english is not my native language and im not sure to use the correct terms for PowerCenter - so if im wrong please help me correct and make clear what we need. We have a kind of 3-steps ToDo. First step: Load data from an external source into a "local" datastore (its an oracle db on a server in our "hands")Second step: Check data against several verifications, this is done with a PL/SQL Package. The PL/SQL Package shall be called with an Interfacename who is set in the First PowerCenter Mapping. Our current thoghts are to do this via a stored procedure, which runs as "Target Post Load" and gets a variable "Interface Name".Is that possible? Im not quite sure about it. About the last part its even more unclear how we can solve it:Third part should be switch back to PowerCenter now - and the package (or to be correct a function in the package) should return a value for "okay everything fine => workflow continue" or "something happened => workflow is stopped" Im not sure how i can handle this. I hope my explanations are good enough so you can provide some help?!If there are any questions please ask!  Thank you alot, best regards, Christian

  • OWA_SEC.CUSTOM package - Custom authentication procedures...

    Folks -
    I haven't ever used the OWA_SEC.CUSTOM package for custom authentication of a psp application - and now need to do so. The documentation doesn't have any examples of what I need to do. Although there is plenty of documentation - it all says the same stuff, without saying what developers need to do to get it to work.
    For example I have updated the following files in the following ways - and still it doesn't work:
    owapriv.sql - updated the line that says:
    auth_scheme := OWA_SEC.NO_CHECK;
    to :
    auth_scheme := OWA_SEC.CUSTOM;
    owacust.sql - updated to say:
    create or replace package body OWA_CUSTOM is
    /* Global PLSQL Agent Authorization callback function - */
    /* It is used when PLSQL Agent's authorization scheme is set to */
    /* GLOBAL or CUSTOM when there is overriding OWA_CUSTOM package.*/
    /* This is a default implementation. User should modify. */
    function authorize return boolean is
    v_username varchar2(30);
    v_pass varchar2(30);
    BEGIN
    owa_sec.set_authorization(OWA_SEC.CUSTOM);
    owa_sec.set_protection_realm('my_app');
    v_username := owa_sec.get_user_id;
    v_pass := owa_sec.get_password;
    IF v_username = 'cmanning' THEN
    return TRUE;
    ELSE
    return FALSE;
    END IF;
    end;
    end;
    show errors
    wdbsvrapp.sql looks like this:
    [DAD_mydad]
    connect_string = my_connect_string
    password = my_password
    username = my_username
    default_page = my_default_package.procedure
    ;document_table =
    ;document_path =
    ;document_proc =
    ;upload_as_long_raw =
    ;upload_as_blob =
    name_prefix =
    ;always_describe =
    ;after_proc =
    ;before_proc =
    reuse = Yes
    connmax = 20
    ;pathalias =
    ;pathaliasproc =
    enablesso = No
    ;custom_auth =
    Can anyone tell me what I am missing / doing wrong.
    For example:
    When I take out the username/password reference from the wdbsvr.app file - the browswer tries to authenticate me and the only username/password that validates is the username/password of the database user.
    I don't want to have to have database users for every application user that should be authenticated in my application. I want to put a routine in the owacust.sql file that authenticates users (via my own routine or an optional LDAP/radius/SecurID lookup). In this basic example - I am only validating with the cmanning/cmanning combination.
    From what I understand in the documentation - if I use OWA_SEC.CUSTOM - then I don't have to put a .authorize function in every package - the OWA agent simply authenticates every request via the OWA_CUSTOM.authorize function.....
    Dude - what's up?
    Can someone from the Big O help a brother out?
    cfm
    null

    Charles
    It looks to me like you want your users authenticated when they try to view your pl/sql-generated html pages, but you want to control the validation with custom code.
    You appear to be trying to use owa_custom.authorize to authorize each request, which seems like a good approach.
    This whole area is quite complex and I have never found any really comprehensive doco on it. Here are my thoughts which others might like to comment on.
    This is a simple version of owa_custom:
    PACKAGE BODY OWA_CUSTOM IS
    FUNCTION authorize return boolean is
    BEGIN
    owa_sec.set_protection_realm('aRealm');
    if owa.user_id is null then
    return false;
    else
    return my_validate_user
    (owa.user_id,owa.get_password);
    end if;
    exception
    RETURN FALSE;
    END authorize;
    begin
    owa_sec.set_authorization(OWA_SEC.GLOBAL);
    end;
    Note the begin block that applies to the package and sets authorization to GLOBAL when the package is loaded.
    The authentication mode in the DAD will need to be Global Owa (afaik) and you will need to supply an oracle username and password in the DAD. ie. you will authenticate the userid/password supplied by the user and then the user will connect to the database as the oracle user specified in the DAD.
    I cannot test this code at the moment. Nor can I give you complete instructions to set up authentication from scratch. But here's a brief description of what the code should do.
    1. It sets authorization to GLOBAL. So mod_plsql will call owa_custom.authorize for every request. That is, you don't call owa_custom.authorize, it will be done for you and the internals probably look like this:
    if owa_custom.authorize then
    user_requesed_page(user_supplied_args);
    else
    send_access_denied;
    end if;
    2. It sets up a realm, which is relevant to HTTP Basic Authentication and its challenge/response. (You don't have to use HTTP Basic Authentication. An alternative is to present a login form to the user, then you manage the userid/password.)
    3. It looks in owa.user_id which will hold the userid supplied by the browser after a HTTP Basic Authentication challenge/response.
    4. It uses your custom code to validate the userid and password once the user has been challenged to provide these. You obviously have to create the my_validate_user procedure in the schema and package of your choice.
    5. It does not time users out, it does not sustain multi-sessions per user via cookies and it does not support logout without shutting the browsers. But it is simpler for lacking these features.
    If this is a way you want to try then your first aim should be to make sure owa_custom is called globally and that it lets you into the database via the DAD-supplied userid and password. You may need some way of writing debug on the server using utl_file to confirm it is being called. Or you could make it return true unconditionally, request a page, then make it return false and request a page.
    This is just a start, but let me know if it is on topic.
    It would be great to hear suggestions and comments from others on authentication for an htp application under iAS.
    Has anyone tried DB Prism?
    null

  • Using a package for solving many mutating tables.....

    Hi,
    I need to solve more than one cases of mutating tables .. following the 'traditional' way described in:
    http://asktom.oracle.com/tkyte/Mutate/index.html
    For these cases , do you recommend me to use an individual package for each case ... or one to cover all cases (with different variables and PL/SQL tables... of course)....???
    Many thanks ,
    Simon

    No , I meant that there are cases on different
    tables....Then there is no other possibility but to create different packages.
    When you write "use api's"... can you give some more
    details....?????I mean to have a package to do all your dml in nice clean functions and procedures like procedure hire_employee, procedure fire_employee, function salary_including_commission and so on. Your procedures will include logic to validate all business rules. Then grant execute privileges on this package (api) to the users that should be able to work with employees and revoke all DML privileges on the table from anyone, even revoke the "CREATE SESSION" privilege from the schema owner when done installing to prevent direct access on the table.
    Now every DML action will be through your api and it's not possible to bypass constraint validation.
    Regards,
    Rob.

  • Business Package for Sales in SAP R/3 4.6C

    Is it also possible to use some of the functions of the Business Package for Sales for connecting to an SAP system 4.6C? I want to use the standard ITS webgui and hope there are some developed templates which I can use.
    Best Regards,
    Alvaro

    <b>-> 46C is no longer in standard maintenance</b> (you could order extended maintenance at an extra price...)
    -> so: you either order or you will not be able to dl r/3 46C
    -> which database system do you plan to use?
    -> i'd rather start with sap r/3 47x200 sr1 or sap erp
    <b>standard installation procedure:</b>
    - get instguide + relevant sapnotes
    - check & apply prerequisites
    - as for oracle: install database software oracle (using runInstaller) and apply patches
    - install central instenace using r3setup and template r3central.r3s
    - install database instance usind r3setup and template r3database.r3s
    - perform post-installation actions..
    GreetZ, AH

  • Package for Deployment

    Hi,
    Can anyone describe me how to create package(not database package) for deployment in oracle forms 10g?
    Thanks in Advance
    Baloch.

    hi
    example:
    PACKAGE test IS
    END;
    /*Define package body procedures */
    PACKAGE BODY test IS
    PRODEDURE register_libs IS
    BEGIN
    /* Load the test library */
    testlib_lhandle := Ora_Ffi_.load_library
    ('c:\orawin95\oralibs\','testlib.dll')
    END;
    PROCEDURE define_c_funcs IS
    getresult_fhandle Ora_Ffi.Funchandletype;
    foo_handle Ora_Ffi.Funchandletype;
    BEGIN
    /* Register the info for function getresult */
    getresult_fhandle := ora_ffi.register_function
    (testlib_lhandle,'getresult');
    /* Register the info for function foo */
    foo_fhandle := ora_ffi.register_function
    (testlib_lhandle,'foo');
    /* Generate PL/SQL package containing all
    functions defined in test library */
    ora_ffi.generate_foreign
    (testlib_lhandle, 'test_ffi_pkg');
    END;
    END;check out the following PDF file i hope you will get idea and hope this helps u.
    http://download.oracle.com/otn_hosted_doc/forms/forms/A73152_01.pdf
    sarah

  • Reuse of existing packages for saving data?

    Hi,
    I'm pretty new to APEX so I lack the in-depth know-how how to do certain tasks.
    We want to build a simple management application for a customer and reuse as much code as possible to keep the price low. For example, there are procedures in packages which do certain business logic and we don't want (and can't do this) to copy and/or modify all this stuff to fit in APEX. This packages accept some IN-parameters and have some OUT-parameters which indicate if the action was successfull or not.
    So lets say we have a (dummy-)procedure
    pkg_handleData.p_saveData
    with following parameters
    - inParam1 IN varchar2,
    - outParam1 OUT pls_integer
    We want to call this packageprocedure after submitting a form (inParam1 => content of a specific formfield) and we want to define our next step after looking at outParam1.
    Is there a way to handle this with APEX - and if yes, how? Is there a tutorial out there which describes "advanced" stuff like this? All I found were basic tutorials for people who just want to view/alter data of a table or forms which rely on procedures (but not packageprocedures).
    (After working with APEX for some few days now I have to say APEX is somewhat mighty, I really doubt this isn't possible. :))

    You can use conditional branching (PL/SQL Function Returning a boolean), but you have to 'wrap' your existing procedures into a function to use that.
    Example:
    Funtion p_savedata( inparam ) returning boolean
    is
    p_out pls_integer;
    begin
    pkg_handledata( inparam, p_out);
    return (p_out > 0);
    end;

  • Need Help: Dynamically displaying parameter values for a procedure.

    Problem Statement: Generic Code should display the parameter values dynamically by taking "package name" and "procedure name" as inputs and the values needs to be obtained from the parameters of the wrapper procedure.
    Example:
    a) Let us assume that there is an application package called customer.
    create or replace package spec customer
    as
    begin
    TYPE cust_in_rec_type IS RECORD
    cust_id NUMBER,
    ,cust_name VARCHAR2(25) );
    TYPE cust_role_rec_type IS RECORD
    (cust_id NUMBER,
    role_type VARCHAR2(20)
    TYPE role_tbl_type IS TABLE OF cust_role_rec_type INDEX BY BINARY_INTEGER;
    Procedure create_customer
    p_code in varchar2
    ,p_cust_rec cust_in_rec_type
    ,p_cust_roles role_tbl_type
    end;
    b) Let us assume that we need to test the create customer procedure in the package.For that various test cases needs to be executed.
    c) We have created a testing package as mentioned below.
    create or replace package body customer_test
    as
    begin
    -- signature of this wrapper is exactly same as create_customer procedure.
    procedure create_customer_wrapper
    p_code in varchar2
    ,p_cust_rec customer.cust_in_rec_type
    ,p_cust_roles customer.role_tbl_type
    as
    begin
    //<<<<<---Need to display parameter values dynamically for each test case-->>>>>
    Since the signature of this wrapper procedure is similar to actual app procedure, we can get all the parameter definition for this procedure using ALL_ARGUMENTS table as mentioned below.
    //<<
    select * from ALL_ARGUMENTS where package_name = CUSTOMER' and object_name = 'CREATE_CUSTOMER'
    but the problem is there are other procedures exists inside customer package like update_customer, add_address so need to have generalized code that is independent of each procedure inside the package.
    Is there any way to achieve this.
    Any help is appreciated.
    // >>>>
    create_customer
    p_code => p_code
    ,p_cust_rec => p_cust_rec
    ,p_cust_roles => p_cust_roles
    end;
    procedure testcase1
    as
    l_cust_rec customer.cust_in_rec_type ;
    l_cust_roles customer.role_tbl_type;
    begin
    l_cust_rec.cust_id := 1;
    l_cust_rec.cust_name := 'ABC';
    l_cust_roles(1).cust_id := 1;
    l_cust_roles(1).role_type := 'Role1';
    create_customer_wrapper
    p_code => 'code1'
    ,p_cust_rec => l_cust_rec
    ,p_cust_roles => l_cust_role
    end;
    procedure testcase2
    as
    l_cust_rec customer.cust_in_rec_type ;
    l_cust_roles customer.role_tbl_type;
    begin
    l_cust_rec.cust_id := 2;
    l_cust_rec.cust_name := 'DEF';
    l_cust_roles(1).cust_id := 2;
    l_cust_roles(1).role_type := 'Role2';
    create_customer_wrapper
    p_code => 'code2'
    ,p_cust_rec => l_cust_rec
    ,p_cust_roles => l_cust_role
    end;
    end;

    Not possible to dynamically in a procedure, deal with the parameter values passed by a caller. There is no struct or interface that a procedure can use to ask the run-time to give it the value of the 1st or 2nd or n parameter.
    There could perhaps be some undocumented/unsupported method - as debugging code (<i>DBMS_DEBUG</i>) is able to dynamically reference a variable (see Get_Value() function). But debugging requires a primary session (the debug session) and the target session (session being debugged).
    So easy answer is no - the complex answer is.. well, complex as the basic functionality for this do exists in Oracle in its DBMS_DEBUG feature, but only from a special debug session.
    The easiest way would be to generate the wrapper itself, dynamically. This allows your to generate code that displays the parameter values and add whatever other code needed into the wrapper. The following example demonstrates the basics of this approach:
    SQL> -- // our application proc called FooProc
    SQL> create or replace procedure FooProc( d date, n number, s varchar2 ) is
      2  begin
      3          -- // do some stuff
      4          null;
      5  end;
      6  /
    Procedure created.
    SQL>
    SQL> create or replace type TArgument is object(
      2          name            varchar2(30),
      3          datatype        varchar2(30)
      4  );
      5  /
    Type created.
    SQL>
    SQL> create or replace type TArgumentList is table of TArgument;
      2  /
    Type created.
    SQL>
    SQL> -- // create a proc that creates wrappers dynamically
    SQL> create or replace procedure GenerateWrapper( procName varchar2 ) is
      2          procCode        varchar2(32767);
      3          argList         TArgumentList;
      4  begin
      5          select
      6                  TArgument( argument_name, data_type )
      7                          bulk collect into
      8                  argList
      9          from    user_arguments
    10          where   object_name = upper(procName)
    11          order by position;
    12 
    13          procCode := 'create or replace procedure Test'||procName||'( ';
    14          for i in 1..argList.Count
    15          loop
    16                  procCode := procCode||argList(i).name||' '||argList(i).datatype;
    17                  if i < argList.Count then
    18                          procCode := procCode||', ';
    19                  end if;
    20          end loop;
    21 
    22          procCode := procCode||') as begin ';
    23          procCode := procCode||'DBMS_OUTPUT.put_line( '''||procName||''' ); ';
    24 
    25          for i in 1..argList.Count
    26          loop
    27                  procCode := procCode||'DBMS_OUTPUT.put_line( '''||argList(i).name||'=''||'||argList(i).name||' ); ';
    28          end loop;
    29 
    30          -- // similarly, a call to the real proc can be added into the test wrapper
    31          procCode := procCode||'end;';
    32 
    33          execute immediate procCode;
    34  end;
    35  /
    Procedure created.
    SQL>
    SQL> -- // generate a wrapper for a FooProc
    SQL> exec GenerateWrapper( 'FooProc' );
    PL/SQL procedure successfully completed.
    SQL>
    SQL> -- // call the FooProc wrapper
    SQL> exec TestFooProc( sysdate, 100, 'Hello World' )
    FooProc
    D=2011-01-07 13:11:32
    N=100
    S=Hello World
    PL/SQL procedure successfully completed.
    SQL>

  • Acrobat XI Pro Install via CCP Packager for Enterprise unuseable - tips for the unitiated

    Well, after at least six weeks of trying to script and package Acrobat XI via the CCP packager for enterprise (Windows 7 X64) I have learnt many home truths which I thought I would share with the unitiated. This process, from the point of view of an IT admin who has to mass deploy this application to 680 PC's as part of an updated SOE has been the most painful scripting process I have ever found of any package (we successfully deploy Office, and Autodesk apps!). Not only that, but our entire State technical colleges have all purchased the same version. This will be affecting IT staff across a huge area, perhaps worldwide. Below are some some facts relating to this that I will share so others do not have to trawl the minefiled of dead-ends and confusion that is Adobe forums/official documentation. Apologies for not finding direct links to all of the below just yet but I've run out of time as we now have MANUALLY install Acrobat XI on all of these machines. When I get time I will post some of the links:
    Facts:
    Acrobat XI and Lightroom are NOT "CC" packages. Therefore they rely on a spearate serial numbers to install standalone without another major Adobe product (eg Photoshop) to be installed and then run first. Otherwise they will run in trial mode. If your organistaion is wanting to install these products I highly recommend seeing if Adobe can provide you with these.
    Without the use of serial number for Acrobat XI this almost renders the Customisation Wizard effectively useless, none of the silent install switch will work with "Offline Exception"
    Yes, one Adobe employee notes that you must install a major package before Acrobat but as the aoplogies for not fixing this were posted last August, we are still in the quandry of not having any useable fix except for the ridiculous "Exceptions" file and Exceptions installer.
    If you run the Build and/or execeptions msi's it installs Acrobat twice, gold Adobe, gold.
    http://forums.adobe.com/message/6039529#6039529 - look at this for a working script for Photoshop etc, it's great.Thanks to http://forums.adobe.com/people/PetriRiihikallio for posting this. However, alas, it cannot silently install Acrobat correctly (thus far).
    It appears that the msi builder for CCP for enterprise is fatally flawed. I have never had as much problem with installing msi's -  ever. For example, I have had to re-package the msi multiples times and many times simply running the msi will fail.
    The idea that all major installs have to install the 32 bit version AND the 64 bit version is riduclous, enough said.
    http://blogs.adobe.com/acrolaw/2013/02/acrobat-xi-deployment-guide-for-large-firms/ this guide may be useful for people who have been given a separate serial number.
    http://helpx.adobe.com/acrobat/kb/known-issues-acrobat-xi-reader.html another useful link
    I think for the time being I have now wasted enough time trying to tear my hair out with this. I will be waiting for Adobe to announce Acrobat and Lightroom CC. this will enable the correct deployment of a single app without having the bloat my SOE with unnecessary applications that most staff rarely use. Ahhh, I love a good manual install via VNC/RDP, don't you?

    Hi Waltpenner and others, yes it can be very confusing and writing script after script got me even more confused.
    Now, the story continues, after 6+ hours on the phone with Adobe Support...
    When you install Adobe Acrobat XI it asks you to install the C++ Redistributable package and this is where the msi will STOP INSTALLING. even though the MSI says "complete"
    Now you think to yourself, OK, I'll write a script to install this msi package no problems, solved.
    Nope, the msi for Acrobat Pro XI will Still Halt even if you write this into the script along with halt no err or something similar in your code.
    So what do you do?
    When you create your msi in Cloud Packager, even though this feels completely against your better judgement tick the box under conflicting Process entitled "Ignore Conflicts and Continue installations" This will (finally) allow you to run the msi. Please see the wonderful deployment script above, which you may still need to edit to your needs (I did) - which I post once it's working perfectly.
    You could then install the C++ redist from Microsoft at a later date ----> On that note however (thanks Microsoft for this gem) the Visual C++ redist is an msi for download, but it's actually a zip file calling an exe inside it. I suggest using the App Deploy Repackager  to help you change registry entries if you need to install this, but choose your favourite tool (and no I'm not talking about that work colleague you don't like
    Note: You will need to install this for certain features of Acro Pro XI to function, most of which relates to sever functions of Acrobat. I will post the exact reasons when I find them. Under pressure to get this deployed, I have not deployed this pckage as yet. Also, I'm unsure how Visual C++ will affect other major apps across my enterprise just yet.
    Things to still consider
    Acrobat still installs twice in the program directory (1.7GB nd 1.8GB respectively)
    As all of the other CC packages are quite easy to install, Adobe needs to provide better service to it's enterprise customers by creating a proper version of Acrobat and Lightroom which is Acrobat CC and Lightroom CC, not version numbers tacked onto their new Cloud Service.
    As for the above point I would still recommend creating the smallest msi packages you can, as large msi's that install a number of Apps (eg all of the web/image editing apps) take forever and quite often exhibit install errors
    The amount of time I've spent on this is ridiculous, and we've had to package everything from Office to Autocad.
    The amount of bandwidth I've chewed up is excessive, with package re-creation (download) of all the products probably about 100GB - however the ability to edit these packages with updates with the CCP is a good step forward.
    Using the CCP through a proxy is horrendous, and complicated with the amount of exception through the servers you have to prvide (even then it rarely works).
    The MSI packager still needs quite alot of work. As Petri states why he had to write a script like this when Adobe could have done the same thing is beyond him.
    Adobe needs to trawl it's forum posts and take out the many false leads and dead ends provided by it's experts.
    When I Think of anything else, or wite more scipts I'll let you all know.
    Cheers,

Maybe you are looking for