How to refer to a variable package name

Hi All,
I'm revising my PL/SQL packages, e.g. Pkg_Name_01, Pkg_Name_02 ... So if refering to a function within such a revised package, I need a method to get the version string from a global variable and then call the function via Pkg_Name_<version_string>.Function_Name (where version_string is the value of a global variable).
Can anybody tell me if this is possible and if so how to achieve this?
Thanks & Regards
Carolin

Carolin wrote:
But as I have a lot of references to revised packages in my code it's a bit error-prone with each new revision - so I thougt there would be a better/simpler solution... How would the approach with dynamic sql look like?<i>Dynamic SQL is Evil ™</i> - okay not always. Judged from what is posted here, a full 1% of all dynamic SQL is not evil.
The simpler solution is to use scope to enable your code to reference the appropriate version. In Oracle, there is unfortunately/fortunately no session scope in this regard. Resolution scope is either local (schema) or public.
For example, the code library (schema <i>CODELIB</i>) has several versions of the FooInterface package, e.g.
- CODELIB.FooInterface_v100
- CODELIB.FooInterface_v110
- CODELIB.FooInterface_v200
Your schema, APP123 needs to use version 1.0 of this interface. A local schema synonym provides name resolution scope:
create or replace synonym FooInterface for CODELIB.FooInterface_v110
Another schema, HRDEMO, needs to use the latest version of the interface. Thus, as that schema:
create or replace synonym FooInterface for CODELIB.FooInterface_v200
Assuming FooInterface is a well behaved interface, you can at any time upgrade your schema to using a newer version of the interface, by recreating your schema synonym for the interface. And no code changes will be needed to your application code to keep it working.
If your versioning needs are finer grained at this and at session level (e.g. different sessions in schema APP123 needs to use different versions of the <i>FooInterface</i>), then you have a serious implementation and versioning problem. Ones that cannot and should not be solved technically (using hacks like dynamic SQL). But ones that need to be addressed via change control and s/w management - in other words, you then have a broken SDLC (Software Development Life Cycle) that needs to be fixed.

Similar Messages

  • How to get JDeveloper to show package names?

    Hi all,
    Newbie question. I have Java classes organized in different packages, but in the left panel where the classes are shown, the package names are not shown to display which class belongs in which package. Is there an option I can set to get JDeveloper to show the package names? I'm using 9.0.3. Thanks.
    Henry

    There's a yellow button with 'Show categories' tooltip. This should work fine.

  • How to refer ?XML element tag name? in the RTF variable

    Hi All,
    I want to declare variable and assign the value of XML element tag to that variable.
    Following are the steps:
    <?xdoxslt:set_variable($_XDOCTX, MYCOUNT,1)?>
    <?xdoxslt:get_variable($_XDOCTX, MYCOUNT)?>
    <?if: xdoxslt:get_variable($_XDOCTX, MYCOUNT) =1?>xxx<?end if?>
    In the declaration part,I need to replace 1 with some of the xml element tag value(for example : <?vendor_name?>).
    But when I try to do so,I get some list of exceptions.
    Please suggest how to proceed.
    Thanks and Regards,
    Kaveri

    Hi Pradeep,
    Thanks for your response.Here my requirement goes:
    for -each:
    text(database value)
    end for-each
    This text value will continue from page 1 to N.
    So for page1 I want HEADER1 and from page2 onwards,I require different header HEADR2.
    By using your approach,my text which needs to be continued on different pages will not be acheived.
    One more thing I got from XMLP User guide:
    <xdofo:inline-total
    display-condition="exceptfirst"
    name="InvAmt">.
    SInce all my tags are generated from Oracel reports,I am unable to use the above xml line.Is there any way to use this by modifying the syntax..
    Please let me know your suggestions since this is show stopper for my report.
    Thanks and Regards,
    Kaveri

  • How to Get Package Name While Running

    Hi
    i want to load Package Name to Table.
    So any idea about ODI Ref Function to get Package Name.

    Hi Nagarjuna,
    You can get package name by doing following steps, as per my knowledge, scenario name and package name both are same in ODI (while creating scenario for package).
    by the time you can retrieve scenario name as package name using below select query with selecting Work Repository schema in ODI variable
    QUERY:
    select SESS_NAME
    from <%=snpRef.getObjectName("L","SNP_SESSION","D")%>
    where SESS_NO = <%=snpRef.getSession("SESS_NO")%>
    Steps:
    1) create a project variable as Get_Package_Name and Data type as Alphanumeric, in Refreshing tab, type above select query and select work repository schema in schema (eg: create WorkRep logical schema in topology manager)
    2) Add Get_Package_Name variable with refresh in package (before interface step)
    3) Generate Scenario for package with same package name with version 001
    When you execute the scenario you can retrieve the package name in Get_Package_Name odi variaable
    Hope this may helps you
    Regards,
    phanikanth

  • How to knoq the package name

    hai
    how can i know about the package name
    suitable answer will be given suitable points
    kumari

    Hi
    Very simple
    Click on systems in menu bar and click on Status
    Click on programme name
    Then Go Goto in the menu bar and click attributes u can see the package namelike pbas
    All the best
    madhu

  • How to refer a packaged variable

    Hi,
    I have gone through the forum where it mentions how to refer a constant in a package.I want to refer a variable declared in package spec.
    CREATE OR REPLACE PACKAGE p1
    IS
    sDebugMode VARCHAR2(3) := 'ON';....
    end;

    user8731258 wrote:
    I have gone through the forum where it mentions how to refer a constant in a package.I want to refer a variable declared in package spec.
    CREATE OR REPLACE PACKAGE p1
    IS
    sDebugMode VARCHAR2(3) := 'ON';
    end;
    In order to use PL/SQL variables (including global static variables), a SQL needs to be created with bind variables. This requires the use of PL/SQL itself. The following is thus valid:
    create or replace procedure GetFooCursor( cur out sys_refcursor ) is
    begin
      --// PL/SQL creates a SQL bind variable and bind it using
      --// the PL/SQL variable
      open cur for select * from foo_table where foo_switch = p1.sDebugMode;
    end;However, you cannot do the following using SQL only:
    SQL> select * from foo_table where foo_switch = p1.sDebugMode;The SQL engine needs to resolve what "+p1.sDebugMode+" refers to. The SQL engine only support calling PL/SQL functions. It is not capable of looking inside the PL/SQL engine's memory and access PL/SQL variables directly.
    So if you want the SQL engine to access that variable directly, you need to create a PL/SQL function that returns the variable value. Which is not really a great approach:
    create or replace function SillyFunc return varchar2 is
    begin
      return( p1.sDebugMode );
    end;The following SQL can then be used:
    SQL> select * from foo_table where foo_switch = SillyFunc();

  • Undefined variable, class, or package name

    The following code in the jsp is supposed to display the correct 'Securities' link based on the app_main_frames URL. I am getting an error. Can anyone help?
    <% if (parent.app_main_frame.location == ("http://ccmsun57.ccminvest.com:8080/cgi-java/Allocation/jsp/scenario.jsp?source=init")) { %>
    Securities
    <% } else { %>
    <a href="/cgi-java/Holdings/jsp/SecurityInventoryQuery.jsp?which_search=none&which_category=none
    target="app_main_frame">Securities</a>
    <% } %>
    I am getting the following error:
    Generated servlet error:
    /opt/JBoss-2.4.4_Tomcat-4.0.1/catalina/work/localhost/cgi-java/common/jsp/NavigationMenu$jsp.java:173:
    Undefined variable, class, or package name: parent
    if (parent.app_main_frame.location ==
    ^
    ("http://ccmsun57.ccminvest.com:8080/cgi-java/Allocation/jsp/scenario.jsp?source=init")) {

    If app_main_frame is a frame in a frameset then you cannot
    simply refer to it in a Java scriptlet.
    You can refer to it in a JavaScript script, like this:
    <script>
    if (parent.app_main_frame.location == "http://ccmsun57.ccminvest.com:8080/cgi-java/Allocation/jsp/scenario.jsp?source=init")
       document.write("<a href=\"javascript:submit_Form('none')\"target=\"app_main_frame\">Securities</a>");
    else
       document.write("<a href=\"/cgi-java/Holdings/jsp/SecurityInventoryQuery.jsp?which_search=none&which_category=none\"target=\"app_main_frame">Securities</a>");
    </script>

  • How do I use bin variable in package without asking a user?

    hi,
    I would like to write an SQL but I want to use bind variable in package as a static without asking user? Like below?
    I would like to ask you, below there is a emp_id variable? Is this BIND variable?
    DECLARE
    bonus NUMBER(8,2);
    emp_id NUMBER(6) := 100;
    BEGIN
    SELECT salary * 0.10 INTO bonus FROM employees
    WHERE employee_id = emp_id;
    END;
    If not, like this SQL how can define a BIND variable as static inside a code? not asking a user?
    db version. 9.2.0.8
    regards and thanks

    OracleADay wrote:
    I would like to ask you, below there is a emp_id variable? Is this BIND variable?
    DECLARE
    bonus NUMBER(8,2);
    emp_id NUMBER(6) := 100;
    BEGIN
    SELECT salary * 0.10 INTO bonus FROM employees
    WHERE employee_id = emp_id;
    END;
    /In the query "SELECT salary * 0.10 INTO bonus FROM employees WHERE employee_id = emp_id" emp_id is turned into a bind variable because
    if you are coding static SQL in PL/SQL then PL/SQL wil automatically use bind variables: please read http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/overview.htm#sthref145.
    This can also be proved with SQL trace. The following code:
    alter session set sql_trace=true;
    declare
    v number;
    c number;
    begin
    select count(*) into c
    from t
    where x=v;
    end;
    show errors
    alter session set sql_trace=false;generates following raw trace file section with 10G XE:
    =====================
    PARSING IN CURSOR #2 len=79 dep=0 uid=69 oct=47 lid=69 tim=33338762257 hv=2860574766 ad='3c10120c'
    declare
    v number;
    c number;
    begin
    select count(*) into c
    from t
    where x=v;
    end;
    END OF STMT
    PARSE #2:c=46800,e=329811,p=0,cr=9,cu=0,mis=1,r=0,dep=0,og=1,tim=33338762253
    =====================
    PARSING IN CURSOR #1 len=35 dep=1 uid=69 oct=3 lid=69 tim=33338788761 hv=3539261652 ad='3c10053c'
    SELECT COUNT(*) FROM T WHERE X=:B1
    END OF STMT
    PARSE #1:c=0,e=216,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,tim=33338788755
    =====================Edited by: P. Forstmann on 17 mai 2011 17:47
    Edited by: P. Forstmann on 17 mai 2011 17:55

  • Sharepoint Workflow : how to get document full path + file name into variable?

    Hi,
    Anybody knows how to get document full path + file name into a variable in Sharepoint 2010 workflow?
    Example http://sp1:80/InvoiceQueue/Shared Documents/123.pdf
    I am using List Workflow which links to a document library.

    Hi SAMSUNG,
    According to your description, my understanding is that you want to get the full path of a document in a list workflow.
    You can set the variable to the Enconded Absolute URL of the document. The screenshot is my testing. In my testing (in the red area), when the title of a document was equal to the tile of the current item, set a variable to the Enconded Absolute URL of the
    document. I used ‘Log to history list’ to check the value of the variable in Workflow History .
    I hope this helps.
    Thanks,
    Wendy
    Wendy Li
    TechNet Community Support

  • How to refer to a protected class outside the enclosing package

    Hi all,
    At the page 357 of the book Java Language Specification(Second Edition), when saying about checking accessibility of Type and Method, they concern Let C be the class containing the method invovation T.m, if T is in a different package than C, and T is protected then T is accessible if and only if C is a subclass of T. I just wonder how to refer a protected type outside the package it declared.
    For example,
    package test;
    public class test {
    static protected class protectedTest {
    public void foo() {..}
    in another package
    import test.*;
    class subtest extends test.protectedTest {  <- error
    Anyone can give me an example showing an invocation directly to foo() declared in class test.protectedTest ? The invocation should appear outside package test.
    Thanks,
    Ha Chau

    The protected inner class would be accesible only within a class which extends test, where you could either use or extend it as in:
    class subtest extends test {
        private static class sub2 extends protectedTest {
               }

  • How to get the package name of a procedure used in a process flow activity

    Hi all. I'm on OWB 11.2.0.2.0.
    When I used a packaged procedure or function in a mapping operator, I can find out the package.program_unit name by getting the operator's FUNCTION_NAME property. For example,
    OMBRETRIEVE MAPPING '$mapName' OPERATOR '$operName' GET PROPERTIES (FUNCTION_NAME)
    But when the same is used in a process flow activity, I can't find a property name that will give me the same information. I can get the BOUND_NAME, it does not tell me the package name. It must be stored in the activity properties because when you pull up the Synchronize dialog for the activity, it knows the package name.
    Is there a way to get this via an OMBRETRIEVE?
    Thanks.

    ANA, this is exactly what I needed. Thank you so much. I saw REFs also in the OMBRETRIEVE MAPPING/OPERATOR syntax, but went cross-eyed trying to figure out if I could use the same there. The closest I found was GET BOUND_OBJECT.
    Thanks again!

  • How to find package name of transactioncode

    hai friends,
            how i can find the package name for a given transaction code .
    i think by using se93
    Moderator message: please search for available information.
    Edited by: Thomas Zloch on Jul 8, 2011 9:52 AM

    Not sure, if this is what you're looking for
    SQL> create or replace procedure p0 as
      2  begin
      3    dbms_output.put_line(dbms_utility.format_call_stack);
      4  end;
      5  /
    Procedure created.
    SQL> create or replace procedure p1 as
      2  begin
      3    p0;
      4  end;
      5  /
    Procedure created.
    SQL> create or replace procedure p2 as
      2  begin
      3    p1;
      4  end;
      5  /
    Procedure created.
    SQL> set serveroutput on
    SQL> begin
      2    p2;
      3  end;
      4  /
    ----- PL/SQL Call Stack -----
      object      line  object
      handle    number  name
    3a7f2d618         3  procedure INV_ADM.P0
    39abfeef0         3  procedure INV_ADM.P1
    39c5ae7a0         3  procedure INV_ADM.P2
    3a0f3a538         2  anonymous block
    PL/SQL procedure successfully completed.
    SQL>

  • How to call a stored procedure using its package name in Oracle

    hi
    we're doing a JDBC scenario where we call a stored procedure(a.prc) using its package name(b)The stored procedure has In /Out/IN-OUT parameter.
    i have got 2 queries:
    1- How to call the stored procedure using it's package.
    2- How to capture the In/Out parameter in the response.

    hi Prateek
    thanks for the reply.
    However when i tried mapping it to Package.procedure, communication channel throws the error saying that Package.proceudre needs to be declared.
    As i said , the procedure has IN-OUT parameter too.In oracle we need to write a block if we want to read the IN-OUT parameter.
    How to get the IN-OUT parameter in XI?

  • How do I create a variable name on the fly?

    Hi,
    If I have a String containing a value, how do I create a variable name using that value during program execution? That is if I have
    String fred = "newvar";
    How do I then create a new String with the name "newvar" (using the contents of fred)? I will never know what the content of fred is until this point. What I'd like to be able to do is something like
    String fred.subString(0) = "a new value";
    Obviously this won't work but if it did the statement would evaluate to something like
    String newvar = "a new value";
    Appreciate any help you can give,
    Dave.

    Here u go:
       private JCheckBox AddCheckBox( String strText, int nTextID )
          JCheckBox checkbox = null;
          Class checkboxDefinition;
          Class[] stringArgsClass = new Class[] {String.class};
          Constructor stringArgsConstructor;
          Object[] stringArgs = null;
          String arg = "";
          arg = "CheckBox" + nTextID;
          String label = new String(arg);
          stringArgs = new Object[] {label};
          try
            checkboxDefinition = Class.forName("javax.swing.JCheckBox");
            stringArgsConstructor = checkboxDefinition.getConstructor(stringArgsClass);
            checkbox = (JCheckBox) createObject(stringArgsConstructor, stringArgs);
            checkbox.setName(label);
            checkbox.setText(strText);
            checkbox.setSize(new java.awt.Dimension(CQuestionBase.PAGEWIDTH, 21));
            checkbox.putClientProperty("1",new Integer(nTextID));
            checkbox.setVisible(true);
          catch (ClassNotFoundException e)
            System.out.println(e);
          catch (NoSuchMethodException e)
            System.out.println(e);
          return checkbox;
       }This code was based on an example I found about two years ago. You can use the same methodolgy to create objects of any kind. Again, look at java.lang.Reflect.

  • How to find proc/func name from package name and line number?

    Hi,
    We are using the pl/sql call stack dump (dbms_utility.format_call_stack) for some debugging purposes. But in the case of a package body execution, the dump does not return the name of the procedure/function that is being executed, but only the name of the package and the line number being executed. So, we have a requirement wherein we need to extract the type and name of a package subunit from the package name and line number.
    e.g.
    From the information package 'A', line number 739
    we should be able to deduce that line 739 is a part of *'function A.f'*
    Does the oracle database provide any native mechanism (PL/SQL packages or otherwise) to support such functionality? If it does not, how can we achieve the desired result?
    Thanks in advance,
    Shashank

    The approach we are currently planning to take up is this :
    1. Write PL/SQL code to parse the entire source (user_source) and build a database table with a structure like this :
    PACKAGE_NAME | UNIT_TYPE | UNIT_NAME | START_LINE | END_LINE
    =============================================
    A | PROCEDURE | P1 | 20 | 345
    A | FUNCTION | F1 | 347 | 629
    etc..
    2. Start PL/SQL package execution.
    3. Keep dumping call stack snapshots whenever a custom debug procedure is called.
    4. Dump the package name and line number to a log file.
    5. Using the package name and line number, query the table built in step 1 and build the final report which shows the control flow in a readable form.
    What we want is to get rid of step 5 and by some means get the logic to extract the unit type and name in step 4 itself.
    Keep them coming..
    Thanks and regards,
    Shashank

Maybe you are looking for

  • How to check SSO user from database?

    Hi: I've posted this topic in Forms forum: How to check SSO user from database? then as I've been told, it's better to post it here, so ...... here is the question: I'm writing a "before delete trigger" to insert into log table before delete. Is ther

  • Large campaigns - Most efficient way to handle - Not using EMOD

    We're using CRMOD but not EMOD for our marketing campaigns. We are not using CRM for B2B but rather for B2C. We have direct mail campaigns that we send to 200,000 of our contacts, eNewsletters send to about 800,000 contacts (using Interspire). We hav

  • Trying to identify what to change for user who has permissions on a library but gets no search results from the library

    We are running SP 2010 service pack 2. Search is working for people in general. Yesterday user Y asked me why they (user Y) does not get results when they search for documents in the library. They get results back when searching other libraries. The

  • Flattening a PDF using Assembler's Invoke DDX

    I have an XDP that needs to be converted to a flat PDF without using output(The solution can only use forms services). Since its being called from within the process orchestration by using the invoke DDX service, I'm totally lost as to how its done.

  • Title in CMR

    Hi Friends, In CMR, general data, title field has the selection options like company, Mrs. etc........If we want to creat our own text, where do we do it. are there any configuration steps? Thanx and Regards Samatha