XSQL, Object Views, and InsteadOf triggers

Hello,
Is there a way to insert an object view using the XSQL servlet without using InsteadOf triggers?
TIA,
Rob

The question is not really related to XSQL per se. The question is, can an object view FOO be updateable without an INSTEAD OF trigger? The answer is typically no, unless it's a trivial object view over an object table. You might check the online Oracle8i documentation on object views for more specifics on when they can be by-default updateable without an INSTEAD OF trigger.

Similar Messages

  • Storing XML using XSU, object VIEW and INSTEAD OF trigger

    Here is the point:
    I've got 2 tables which are linked:
    CREATE TABLE dept (
    deptno NUMBER PRIMARY KEY,
    deptname VARCHAR2(20)
    CREATE TABLE emp (
    empno NUMBER PRIMARY KEY,
    empname VARCHAR2(20),
    deptno NUMBER REFERENCES dept(deptno)
    I've got the following message, which I want to insert in the tables using XSU (I already have a PL/SQL stored procedure which work perfectly for insertion into 1 table, using DBMS_XMLSave.insertXML or xmlgen.insertXML):
    <DEPT>
    <DEPTNO>10</DEPTNO>
    <DEPTNAME>IT</DEPTNAME>
    <EMP>
         <EMPNO>1</EMPNO>
         <EMPNAME>John</EMPNAME>
    </EMP>
    <EMP>
         <EMPNO>1</EMPNO>
         <EMPNAME>Phil</EMPNAME>
    </EMP>
    </DEPT>
    So I've created the following object:
    CREATE TYPE emp_t AS OBJECT
    empno NUMBER,
    empname VARCHAR2(20)
    CREATE TYPE emplist_t AS TABLE OF emp_t;
    CREATE TYPE dept_t AS OBJECT
    deptno NUMBER,
    deptname VARCHAR2(20),
    emplist emplist_t
    Now I understand that I should create an object VIEW and an INSTEAD OF trigger (That's what I read many times),
    but I don't know how to structure the view and the trigger.
    Could you help? (Example of a similar context, piece of code)
    Thanks a lot
    Marion

    Hi John,
    I have exactly the same issue as you experienced back in January. I have a complex data modelling requirement which requires the need to pivot rows into columns using ROW_NUMBER() and PARTITION clauses. To hide the complexity from the middle tier, I have created a database view and appropriate INSTEAD OF triggers and mapped my EO to the view. I have overriden the lock() method on the EO implementation class (to avoid ORA-02014) and would like to try the same solution you used with the pl/sql call to lock the record.
    My question is, how did you manage the release of the lock if the transaction was not rolled back or committed by your application i.e. if the user closed the browser for instance.
    In my naivity, I would like to think that the BC4J framework would release any locks for the database session when it found the servlet session to be terminated however my concern is that the lock would persist and cause complications.
    Any assistance greatly appreciated (if you would be willing to supply your lock() method and pl/sql procedure logic I would be even more grateful!).
    Many thanks,
    Dave
    London

  • Object priviliges, and compiling triggers

    Hello all,
    Just wanting to refresh my memory.
    If you have schema fred. Fred has a table1 with a trigger1, that needs to do a select off another schema 'wilma' s table2, and her sequence2.
    Now, if fred is granted a role 'wilma_role' that includes:
    select on wilma.table2
    select on wilma.sequence2
    But, no 'direct grants to these objects, other than that 'wilma_role' then his trigger will fail to compile, correct?
    In order for fred's trigger (basically a stored proc for analogy here) to compile, he must be explicitly granted:
    select on wilma.table2
    select on wilma.sequence2
    on those object.....even though he has been granted that role. It has to be a direct grant for use in triggers and stored procs, is this correct?
    Thanks in advance,
    cayenne

    is this correct?It depends.
    Privileges acquire via ROLE do not apply within PL/SQL procedures.

  • Mapping Variables(Object View) to Measures(Model View)

    Hi,
    In my AW, I have created a cube, And then I have created a new variable in the object view and populated it using load programs. Now. when I try to create a measure in the model view of the same cube based on this variable, I cannot see any option for assigning a variable to a measure. Can someone please help me out in doing this?
    I need the measure in the model view, because it looks like, when I create a relational view, only the measures that are defined in the model are added to the view and not the variables available in the object model.
    Thanks,
    Bharat

    Hi Bharat,
    The mapping editor is used to map a measure to a relational data source. Therefore, unless you convert your data source used by your DML program to a relational table/view (if it is a text file you can use an external table to present the data to AWM as a relational table, or if it is an Excel spreadsheet and your database is on Windows you can use the heterogenous gateway service to load directly from Excel by exposing the Excel worksheet as a relational table) you will not be able to use the mapping editor.
    To assign an OLAP variable to an measure within a cube you will need to create a custom calculated measure. This will allow you to create a measure that "maps" to your OLAP DML program. There is an Excel utility on the OLAP OTN home page that allows you to create custom calculated measures (at the moment this feature is not AWM10gR2 - but is available within AWM 11g). Click here for more information:
    http://download.oracle.com/otn/java/olap/SpreadsheetCalcs_10203.zip
    My advice would be to try and convert your data source to a relational table/view and using the mapping editor. This will allow you to benefit from the many new features within OLAP cube storage such as compressed composites, data compression, paralled processing, partitioning and aggregation maps. Of course you can code all this manually but it is much easier to let AWM do all this for you via a few mouse clicks. Please note - that everything you build outside of the AWM model view has to be managed (defined, updated, backed up etc) by you rather AWM. So while there are lots of advantages of using OLAP DML, I personally always try to load data into my OLAP cubes using AWM mappings and save OLAP DML for providing the advanced types of analysis that make OLAP such an excellent calculation engine.
    Hope this helps
    Keith Laker
    Oracle Data Warehouse Product Management
    OLAP Blog: http://oracleOLAP.blogspot.com/
    OLAP Wiki: http://wiki.oracle.com/page/Oracle+OLAP+Option
    DM Blog: http://oracledmt.blogspot.com/
    OWB Blog : http://blogs.oracle.com/warehousebuilder/
    OWB Wiki : http://wiki.oracle.com/page/Oracle+Warehouse+Builder
    DW on OTN : http://www.oracle.com/technology/products/bi/db/11g/index.html

  • Object views

    How object views and object tables are different from views and tables?
    regards
    Arpit

    How object views and object tables are different from views and tables?Their structure is determined by a user-defined type or object. The clue is in the title.
    Find out more about object views and object tables.
    Cheers, APC
    Blog : http://radiofreetooting.blogspot.com/

  • Help! - XSU, object-relational views and chaching

    I'm working with Oracle's SQL utility XSU using the PL/SQL API (xmlgen package) to generate XML from object-relational views in Oracle 8.1.7.
    Sometimes when I change the definition of the view or the objects the view is based on the changes seem not be be reflected in the generated output. I'm getting errors for datatypes I've changed (Java still wants the "old" datatype) or the XML tag generated still reflects the old column name of the object. I get the new definition when I restart the database but that's not really a workable option.
    I suppose the objects/view or something else must be cached somewhere.
    Does anyone know what is going on?
    Where is this stuff cached?
    Can I somehow flush the cache?
    Can I turn the cache off ? (might be useful for a development environment)
    Any help'd be appreciated!
    null

    Peter,
    Glad to see you took my advice and posted your question over here. Although I am a frequent user of the Oracle usenet groups, I have found that this is a much better place to get help with Spatial. My experiences suggest that the population of people using spatial is small--and of them the ones that really know alot are few and far between. I can only claim to be in the former group.
    As far as your problem goes--this is probably something you've already considered--is there a way to model the data such that you don't have to replicate the geometry components? Another option would be to handle the replication without using snapshots. Examples would be to export the data and then ftp/copy it to the target machines and import it. If you need real-time replication you could experiment with triggers that execute INSERTs/UPDATEs/DELETEs on the remote databases. This of course has its own issues--but you're going to end up with some sort of compromise no matter how you slice this.
    Of course you could use the relational model. I have never used it so I'm hard pressed to give any advice on it. As I posted on the usenet board, it is heading for desupport in 9i Release 2 according to the documentation available. So if you go relational you'll eventually have to migrate to object/relational. I'm not sure how automatic (or non-automatic) that process is. Hopefully someone on here will have some more concrete advice on that.
    Good luck.
    Matt.

  • Questions on ADF View Objects, Links and Iterators

    I have a number of questions regarding using ViewObjects in applications where there are alot of relationships between tables.
    First, lets say that I have ViewObject SomeView that was added to the App Module (AM) as VO1. And because it has a number of "detail" records that have to be iterated through in a "report like" view it has those other VO's added under it as "children" in the AM.
    So I have
    VO1 (an instance of SomeView)
    --> VO2 (an instance of some other view)
    --> VO3 (an instance of some other view)
    that is used on pages where only a single VO1 is shown at a time.
    Now because I had another page I wanted to make that had a listing of all SomeView objects. Some of the fields in SomeView are foreign keys to records in VO2 and VO3 and while I don't want to show all the fields from VO2 and VO3, I do want to show a name field from each rather than just the foreign key.
    My experience (though I've never read this anywhere) tells me that when doing a "table" that is a list of rows from a VO, you can't display info from the child VO's because the child VO's are on whatever record corresponds to the "currentRow" in the parent VO and just displaying the rows in a rangeSet doesn't make each the "currentRow" so even we display 10 records in a for loop, the "currentRow" is just one, and the child VO's iterators aren't moved as we go through the for loop. (Can someone confirm if I am correct on this conclusion????)
    So the only way I know of to show some field from a related table in each row is to make the VO have the entity objects from the related tables be part of the view as references. Is this the only way?
    If I do that on a view that didn't have other views as children defined in the AM I don't have any problem and it works like I want.
    But if I do it on a view that did have other views as children defined in the AM it makes the page(s) using that view with the children iterators behave badly. Half the information quits showing up, etc.
    For example, ... if I go to the "SomeView" which was defined with only one entity object association, and I add the entity objects (that are the basis of instances of VO2 and VO3 ) as referenceable only, it totally breaks the page where I display a single VO1 and use it's VO2 and VO3 children. IS THIS NORMAL OR AM I MISSING SOMETHING?
    So, is the solution that I have to have more view objects defined for different purposes ?
    Can anyone give any general guidelines for when/where to use different view objects vs. when to use different iterators. I'm not having much luck with using secondary RSI's and haven't found much info on them.
    Also, how about issues of naming iterators that are in various binding containers (ie. UI Model for a page). If I do and LOV it creates an iterator and gives it a default name like ViewNameIterator1. If I already have a different page that uses a regular (non LOV) iterator with that name, and the user goes back and forth between those pages, is that a clash?
    Finally, I've read a couple of Steve Muench's blogs on View Link consistency but I'm not sure what the rules are on when it applies and doesn't. How you turn it on or off, etc. One of his examples in http://radio.weblogs.com/0118231/2004/02/27.html talks about it in the context of two view objects that are NOT typically "linked" in a master/detail kind of way. Like an AllDepartments and a DepartmentsLessThan view. Do you have to create a View Link between them to have results of one be reflected in the other if they aren't used in the same page in a web app? Or does it happen automatically (with the caveat that you have to do the rowQualifies method). Just feels like I'm missing some pieces.
    Thanks in advance,
    Lynn

    Hi,
    I am also interested in a best-practice note from oracle.
    Currently we store history in seperate history tables for columns that changed. All this implemented in our BaseEoImpl overriding the EntityImpl.prepareForDML().
    Thanks

  • Can Designer generate ADF Entity Objects, View Objects and Apps Module ?

    Hi all,
    On what way can Designer integrate with JDeveloper (+ ADF) ?
    Can Designer generate ADF Entity Objects, View Objects and Apps Module ?
    Thank you for your help,
    xtanto

    Designer itself has no direct integration with JDeveloper. However, there are three options. First of all, you can get a JDeveloper extension (download this separately) that lets you create a Connection to a Designer repository. From that Connection you can find modules that you defined in Designer and generate Entity and View objects for the tables and columns that you used in those modules, and an Application Module. It does not create JSPs or other user interface objects.
    Another option is to buy JHeadstart from Oracle. This contains a set of code generators and ADF extensions that include an ability to get information from a Designer repository. JHeadstart works fine for non-Designer users too, but was built by the same people who wrote Designer Headstart - they know the repository API intimately.
    The third option is to download Oracle Designer Extension Builder (ODEB) which was just recently made available. This is a product of a collaboration between Designer users from the Oracle Development Tools Users Group (ODTUG) and Oracle to extend the capabilities of Designer with user written tools and utilities. You could use ODEB to write your own generators for ADF Business Components. Or you could wait and see if someone else in the user community does this. I hope that you or whoever does such a generator will be willing to share it with us all.

  • AWM Plugins and Object View

    I'm trying to create a java plugin for AWM that is only valid for items in Object view (eg Variables, Programs etc... all the primitive Express objects).
    According to the interface defined for AWMPlugin methods:
    void handle(Frame parent, Connection conn, String type, Object obj,
    AW aw, Map param);The 'type' and 'obj' represent either a String or an Object that is associated with the selected tree item, or null.
    My problem is that type and obj are always null when operating in Object view, but pass a non-null value in Model view .
    Has anyone encountered this? Does it mean the AWM plugin interface is only valid for the Model view?
    Does anyone know of a way to get a handle to something like a Variable or Program in Object view using the AWMPlugin interface?

    I am certainly not an expert on this but this would be my thoughts on this topic -
    AWM plugins are supposed to only work on model view since this view over the AW uses the public APIs called Standard Form. The Object view uses a non-public API which addresses the internal AW catalog (i.e. the NAME dimension). Therefore, it would not surprise me that the API you are calling returns NULL when you try to access non-Standard Form objects.
    I will try and contact one of the OLAP PM's this afternoon and get his opinion and let you know.
    Keith Laker
    Oracle EMEA Consulting
    BI Blog: http://oraclebi.blogspot.com/
    DM Blog: http://oracledmt.blogspot.com/
    BI on Oracle: http://www.oracle.com/bi/
    BI on OTN: http://www.oracle.com/technology/products/bi/
    BI Samples: http://www.oracle.com/technology/products/bi/samples/

  • Validation at View Object level and not Enity Object

    How would you create validation logic at the view object level and not at the entity object level? I have many VOs that reference the same EO and want some validation logic to be applied only to certain VOs.
    Thanks,
    Quoc

    My use case for this is to perform form validation inputted by the user via a JSPX page.

  • Oracle forms and reports with object views in oracle 9i

    Can We use oracle 9i Object Views in oracle forms and reports. If yes, then which version?

    MichaelFerrante,Thank you for your help.
    I have already used the HS services to connecto to external databases from our main Oracle database, and the solution works fine.
    But unfortunally for this particular client he cannont have installed a Oracle database due to internal policies restrictions.
    I can not migrate the full application to another technology like ADF in less than 6 or 8 months.
    Do you thifnk that there is any other solution?
    Mensagem editada por: user10660669

  • Oracle 8i, Views and Triggers

    Our application uses Views, which are essentially mirrors of the tables to perform all updates. A GRANT ALL to PUBLIC is given to the views. These updates fire Triggers on the Tables which has worked great until we attempted to run our application at a new client running 8i on Unix. I noticed the INSTEAD_OF option on triggers for 8i, but is it a definite requirement for 8i. I can't believe the old normal trigger code now fails on 8i (by disconnecting); or is it something else. Please advise.
    null

    We asked our developers and here is the answer...and a follow up question.
    The INSTEAD OF is a new option on triggers to work over views. This has absolutely no impact on existing triggers on tables. If you have a view defined over a table (or set of tables) and then perform any DML over the
    view, in the regular case, the DML will translate to operations on the base tables and the appropriate triggers on the base table will fire.
    With the new INSTEAD OF option since Oracle8.0, you can define a trigger over
    a view itself, (particular if the view is complex enough that the system cannot handle inserts/updates/deletes on the view), and the trigger body will handle the DML by firing appropriate statements.
    The problem you are seeing is probably something else.
    What do you mean by "disconnecting"??
    Are you getting some sort of error or something when using the old triggers??
    -John
    null

  • Object view  with nested table and member functions????????????????

    HI frds:)
    I need some help regarding writeing soem queries..
    I have to use view in retreving data and by useing member functions of object.
    1) i have to create a nested table by useing type object.
    2) i have to create a object wtih member functions inorder to create view of taht nested table,.
    3) by useing this objectt view and by useing methods i have to write soem queries ...
    If any one know or any information regarding this please reply me... as i have searched in net alot but i was unable to figure out..
    Thanks....

    // first createing object
    create type emp_det as object
    (empname varcahr2(20),start_date date,end_date date);
    // creating table of that object
    create table emp_detai_table as table of emp_det;
    // creating nested table
    create table empl (emp_no number,emp_detail emp_detail_table,dep_no number)nested table emp_detail store as s;
    //now i want to create view.. inorder to create view i need to create object. in that object i want to create methods.. these methods should work with date attributes..
    after creating object view i need to select or write some queries by useing member methods..
    This is the tast i have to perform.,. i have no materials ...if u have any link ..forward me..
    i have to do it as soon as possible..
    waiting for your reply...

  • Authorization objects for  transaction, one to view, and one to maintain

    Hi all,
    My requrement is to create two authorization objects for  transaction, one to view, and one to maintain.
    I know how to create objetcs vai sm21, but i donot know how to crate objects with activity codes.
    Please suggest how to create object where i can asign activity codes.
    regards
    manish

    The Authorization Concept
    R/3 uses authorization objects to assign authorizations to users. An authorization object is a template for an authorization. For example, authorization object F_SKA1_BUK - G/L Account: Authorization for company codes requires the specification of two field values: Company Code and Activity. To allow a General Ledger supervisor to create a general ledger master record, he/she must be assigned an authorization to create (Activity 1) accounts for a specific company code (eg. Company Code 2000). Such an authorization is created using the object F_SKA1_BUK by assigning these field values and naming the authorization following an appropriate convention (eg. Z_SCC20001).
    Authorizations may be classified as general authorizations, organizational authorizations or functional authorizations. General authorizations specify the functions a user may perform. Authorization object F_SKA1_BUK has been assigned to the function for creating general ledger master records. The system checks for the useru2019s authorization to create general ledger accounts (Activity 1) in at least one company code. The system then checks whether the user is permitted to create accounts for the specified organizational unit (company code) and has the required functional authorizations. Authorizations in this case may restrict the user to certain Charts of Accounts. In addition, an authorization group may be defined in certain authorization objects to protect individual master records.
    Profiles relating to an organizational role (eg. General Ledger Supervisor) are defined consisting of a list of authorizations and other profiles. Such profiles are then assigned to users with that role and stored in their user master record along with other data (eg. password).
    Do check this link as well.
    http://articles.techrepublic.com.com/5100-10878_11-5110893.html

  • View Objects , whereclauseparam and PERFORMANCE in JSP

    We experience that using the method setWhereClauseParam gives VERY BAD performance in our JSP applications.
    According to JDev team and others, "best practice" is to use setWhereClauseParam(s), so we wonder why the performance degrade significantly compared to a simpler approach (=define the whereclause when the datasource is created). To avoid the shared pool to grow we were tempted to use the recommended best-practice-parameter-binding approach, but due to performance we had to drop that idea.
    Our JSP (pseudo) code look like this:
    <jbo:ApplicationModule id="am" .......
    <jbo:DataSource id="ds" appid="am" viewobject="ourView" rangesize="0"/>
    <%
    ViewObject ourVo= ds.getApplicationModule().FindViewObject("ourView");
    ourVo.setWhereClauseParam(0, 'xxx');
    ourVo.setWhereClauseParam(1, 'yyy');
    %>
    <jbo:RowsetIterate datasource="ds" >
    bla bla bla ..
    </jbo:RowsetIterate>
    THIS IS SLOW !! ..... compared to:
    <jbo:ApplicationModule id="am" .......
    <% String clause = "Col1 = 'xxx' and Col2 = 'yyy' %>
    <jbo:DataSource id="ds" appid="am" whereclause='<%= clause %>' viewobject="LabelHeadersView" rangesize="0"/>
    <jbo:RowsetIterate datasource="ds" >
    bla bla bla ..
    </jbo:RowsetIterate>
    We get the same results but the last method is times 100 faster ??
    Any ideas are appreciated .
    Thanks, Jens

    OK. I believe I now know what the culprit it. It is your use of the where clause fragment:
    (pdk_files_id = ? OR ? IS NULL)
    Here's how I arrived at this (while at the same time ruling BC4J out of the picture as a potential cause of the problem).
    I following the steps below:
    [list]
    [*]Connected as SCOTT in SQLPlus, I create the table:
    CREATE TABLE files( pdk_files_id NUMBER PRIMARY KEY, name VARCHAR2(20));
    [*]I insert one row into the new files table:
    INSERT INTO files values (1111, 'SteveTest');
    COMMIT;
    [*]I connect as SYSTEM, an run the script ORACLE_HOME/sqlplus/admin/plustrce.sql to create the SQL*Plus PLUSTRACE role so that SCOTT will be able to use the SQLPlus AutoTrace feature
    [*]As SYSTEM still, I ran the command: GRANT PLUSTRACE TO SCOTT
    This gives SCOTT the privilege to use the SQL*Plus autotrace command
    [*]I connect as SCOTT, and run the script ORACLE_HOME/rdbms/admin/utlxplan.sql
    this created the plan table in my SCOTT schema needed to run the autotrace feature
    [*]In SQLPLUS, still connected as SCOTT I issue the command:
    SET AUTOTRACE ON EXPLAIN
    [*]Then I do the following to create a SQL*Plus bind variable
    VAR v VARCHAR2(20)
    [*]And then do the following to set its value at the SQL*Plus command prompt:
    EXEC :v := '1111';
    [list]
    Finally, I try some different queries and look at the autotrace output:
    SQL> select * from files where pdk_files_id = 1111
      2  /
    PDK_FILES_ID NAME
            1111 SteveTest
    Execution Plan
       0      SELECT STATEMENT Optimizer=CHOOSE
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'FILES'
       2    1     INDEX (UNIQUE SCAN) OF 'SYS_C003006' (UNIQUE).
    This shows that using the literal value 1111 uses the index.
    SQL> select * from files where (pdk_files_id = 1111 or 1111 is null)
      2  /
    PDK_FILES_ID NAME
            1111 SteveTest
    Execution Plan
       0      SELECT STATEMENT Optimizer=CHOOSE
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'FILES'
       2    1     INDEX (UNIQUE SCAN) OF 'SYS_C003006' (UNIQUE).
    This shows that using the literal values together with the OR clause, still uses the index.
    SQL> select * from files where (pdk_files_id = :v)
      2  /
    PDK_FILES_ID NAME
            1111 SteveTest
    Execution Plan
       0      SELECT STATEMENT Optimizer=CHOOSE
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'FILES'
       2    1     INDEX (UNIQUE SCAN) OF 'SYS_C003006' (UNIQUE).
    Using my ":v" bind variable I defined, it uses the index, too, even though the type of the bind variable is VARCHAR2 and the type of the PDK_FILES_ID column is NUMBER. This is because this is a simple enough case for the database to do automatic type coersion to convert my string value '1111' for the bind variable into the number value 1111 and then use that for the index lookup.
    HOWEVER, when I try the case that simulates what you are doing in BC4J, which is using a bind variable together with the OR clause for the NULL test, we see...
    SQL> select * from files where (pdk_files_id = :v OR :v IS NULL)
      2  /
    PDK_FILES_ID NAME
            1111 SteveTest
    Execution Plan
       0      SELECT STATEMENT Optimizer=CHOOSE
       1    0   TABLE ACCESS (FULL) OF 'FILES'.
    So in this case, the database DOES NOT use the index, and hence explains why your query is slow.
    I believe the database works this way because when it hard-parses the SQL statement, it is at this time that it determines the query plan for the SQL statement. The plan needs to remain stable since the same plan will be cached and reused for all uses of the same parsed SQL statement, so the plan cannot be conditional based on the values of the bind variables. Since it cannot decide without knowing the value of the bind variable, it apparently disqualifies your index from being used.
    Even introducing an optimizer hint only improves the problem a little. I tried this example:
    SQL> select /*+INDEX (files sys_c003006)*/ *
      2  from files where (pdk_files_id = :v or :v IS NULL)
      3  /
    PDK_FILES_ID NAME
            1111 SteveTest
    Execution Plan
       0      SELECT STATEMENT Optimizer=CHOOSE (Cost=826 Card=5 Bytes=125)
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'FILES' (Cost=826 Card=5 Bytes=125)
       2    1     INDEX (FULL SCAN) OF 'SYS_C003006' (UNIQUE) (Cost=26 Card=82).
    In this case it still has to fully scan the index where above it was able to do a unique scan.
    MORAL OF THE STORY:The tiny cost of having two different View Objects in your application, one to use when you want to find by PDK_FILES_ID, and one to use when you want to find by your other key criteria, is well worth the performance improvement that can be had by using bind variables and using them in a way that the database will use the index.
    As Tom Kyte says in his excellent book Expert One on One: Oracle in a passage that made me laugh:
    "If I were going to write a book about building Oracle applications that do not scale, "Don't Use Bind Variables" would be the first and last chapter." :-)
    So, by using a few design-time-created view objects that uses bind variables and avoid the use of the (COL = ? OR ? IS NULL) construct, you get the following benefits:
    [list]
    [*]The database doesn't have to hard-parse your SQL statement each time you execute it (which it does if you keep sending queries that have literal values in the SQL statement, making each query different as far as the SGA is concerned)
    [*]The indexes will get used correctly as we saw above
    [*]Your code actually might be clearer, since you can name one of your view objects "FindFileById" and the other one "FindFileByName", or what have you
    [list]
    Hope this helps.

Maybe you are looking for

  • How do I find out what applications are running in the background

    I have a 2008 iMac with 2GB memory.  How do I find out what programs are running in the background?  I am going to buy a new iMac before the end of the year to replace this one.  When I looked at Activity Monitor it shows 1.8Gb used but doesn't tell

  • Command line hangs when starting OC4J with MapViewer

    Hello, I have a simple development setup with a stand-alone oc4j instance installed via the MapViewer Quick Start Kit, on an 11g database, on a Windows XP workstation. The problem: When I start the oc4j instance everything seems to start up successfu

  • How do I get Skype Customer Service to do their jo...

    Hello I am not happy with Skype Customer Service.  My work forced me to log out of Skype to get my WiiFii working (don't ask me why).  I logged out, but could not log back in because I forgot my password.  I tried to get my password, but it went to a

  • JSF 2.0 Ajax navigation problem

    Hello I have some problem with new AJAX functionality of JSF 2.0. I want to do the navigation between two pages via AJAX because it looks more smooth and I have the possibility to show a wait screen during the server request. Here is a short example.

  • ITunes Album Artwork Screensaver Locked

    I can't change to any other screensaver except the album artwork. Every time I try it closes the program or just doesn't change. Any advice would be greatly appreciated.