Complex Views
I'm trying to figure out how to build a complex view. Right now I have a textfield and button that are tied to a search function. I have a SearchController class that is tied to a SearchView.xib. The textfield and search button are for specific keyword searching
I want to add a table view to this search view for canned searches by category. Should I create another controller just for this sub-part to the view or should I just implement the methods for a UITableViewController within the Search Controller?
I understand that a UITableViewController is just a dummy interface. That's not exactly what I'm getting at...
I do have my controllers separated into a SearchController and a ResultsController with different xib view files associated with each of them. What I'm struggling with is trying to add a UITableView to the search view which is owned by SearchController which is a UIViewController.
It seems like it would be a bad idea to have two controllers, one referencing the larger part of a view and a subpart of that view being controlled by a second controller, so I'm trying to add a UITableView as a member variable of the SearchController and making the SearchController a UITableViewDelegate. I just want to make sure I'm approaching this problem with the best practices. Apple has provided some great examples about Table Views themselves, and other views, but there is no example out there that has multiple types of views in one given view.
Similar Messages
-
How to update or delete records in a Complex View in Forms?
Hi,
I have a requirement to create a Form by using Complex View. Insertion is possible but updation and deletion is not working properly . I got FRM-40501 Error. I need How to update or delete records in a Complex View in Forms?
Thanks & Regards,
Hari BabuDepending on how complex your view is, forms is not able to determine how to appropiately lock a record, when you try to update or delete a record.
One approach to using complex views in forms:
1. Set the Key-mode of the block to "Non-Updateable"
2. Mark the column which can be used to build the WHERE-condition to uniquely identify a record with "Primary Key" = "Yes"
3. For doing INSERT, UPDATE and DELETE, create an INSTEAD-OF-trigger on the view.
4. Create your own ON-LOCK-trigger in forms which does the locking of the records to update. -
SQL Developer version 3.0.04 on XP Pro
We are able to use the data grid to update the values of views that are inherently updatable, no problem.
We have a complex view with an associated instead-of-update trigger. We are able to update this complex view using an UPDATE statement, no problem.
We would like to be able to update the complex view using the data grid (just in case I am mixing up the terminology, by "data grid" I mean the interface you get when you select the view from the navigation pane and then click the "Data" tab), but the fields are read only.
Is there a configuration option that we can use to enable this? Or, some sort of workaround? Or, are we simply not able to update complex views using the data grid?
Thanks!
-Tomi think u need to change ur application structurei don't think so. Create an INSTEAD-OF-trigger on your view and manage the splitting there. In forms, you wil have to set the property "Primary Key" for the pk-item's to "Yes" and eventually you have to create an ON-LOCK-trigger
-
i have create a complex view
and i want to use this view in oracle form developer 6i
when i try to insert a new record in the view i have this error message frm-40602
in the database i have wire the instead of trigger
so how can i use the form to insert anew record in this viewnot all columns can be updated by a view. Those columns, which are not allowed have to be set to "Query Only". try this property
-
Why we cannot perform DML operations against complex views directly.
hi
can any tell me why we cannot perform DML operations against complex views directly.Hi,
It is not easy to perform DML operations on complex views which involve more than one table as said by vissu. The reason being you may not know which columns to be updated/inserted/deleted on the base tables of the views. If it is a simple view containing a single table it is as simple as performing actions on the table.
For further details visit this
http://www.orafaq.com/wiki/View
cheers
VT -
Complex views can be updatable?
I am having one complex view i need to update at run time for that view dipendent table. how can It possible
from the free, online SQLmanual, the CREATE VIEW chapter, Notes on Creating Updatable Views
An updatable view is one you can use to insert, update, or delete base table rows. You can create a view to be inherently updatable, or you can create an INSTEAD OF trigger on any view to make it updatable.
To learn whether and in what ways the columns of an inherently updatable view can be modified, query the USER_UPDATABLE_COLUMNS data dictionary view. (The information displayed by this view is meaningful only for inherently updatable views.)
If you want the view to be inherently updatable, it must not contain any of the following constructs:
A set operator
A DISTINCT operator
An aggregate or analytic function
A GROUP BY, ORDER BY, CONNECT BY, or START WITH clause
A collection expression in a SELECT list
A subquery in a SELECT list
Joins (with some exceptions as described in the paragraphs that follow).
In addition, if an inherently updatable view contains pseudocolumns or expressions, you cannot update base table rows with an UPDATE statement that refers to any of these pseudocolumns or expressions.
If you want a join view to be updatable, all of the following conditions must be true:
The DML statement must affect only one table underlying the join.
For an INSERT statement, the view must not be created WITH CHECK OPTION, and all columns into which values are inserted must come from a key-preserved table. A key-preserved table in one for which every primary key or unique key value in the base table is also unique in the join view.
For an UPDATE statement, all columns updated must be extracted from a key-preserved table. If the view was created WITH CHECK OPTION, join columns and columns taken from tables that are referenced more than once in the view must be shielded from UPDATE.
For a DELETE statement, if the join results in more than one key-preserved table, then Oracle deletes from the first table named in the FROM clause, whether or not the view was created WITH CHECK OPTION. -
I have a complex view in which all not null columns selected in view query for the both table,
No group function,pseudo column,distinct,group by clause,no columns defeined by expression,
Whether we can do DML operation for this above criteia?From the document
Updates of Object Views
You can update, insert, and delete the data in an object view using the same SQL DML you use for object tables. Oracle updates the base tables of the object view if there is no ambiguity.
A view is not updatable if its view query contains joins, set operators, aggregate functions, GROUP BY, or DISTINCT. If a view query contains pseudocolumns or expressions, the corresponding view columns are not updatable. Object views often involve joins.
To overcome these obstacles Oracle provides INSTEAD OF triggers. They are called INSTEAD OF triggers because Oracle runs the trigger body instead of the actual DML statement.
INSTEAD OF triggers provide a transparent way to update object views or relational views. You write the same SQL DML (INSERT, DELETE, and UPDATE) statements as for an object table. Oracle invokes the appropriate trigger instead of the SQL statement, and the actions specified in the trigger body take place. -
How to insert new record or update existing record using a complex view?
Currently I created this screen, there is no problems on display data, only on the update funtionality (it means insert / update / delete on the table for which the view is based on).
I have a table and a complex view in order to display the information from the table in a tabellar form (i.e up to 70 record in same "record" in the form, one for each item)
The view is like this
select a.f1, a.f2, get_value(a.pk1,1) a1, get_value(a.pk1,2) a2, get_value(a.pk1,3) a3............
from my_table a
where a.proj_id = user
and I want to permit the update of the field a1, a2, a3 in a multiposition canvas (tabellar).
I created an INSTEAD-OF trigger.
But it not work only in the form. I receive the error FRM-40654 when I try to change the existing value in the running form based on that view.
The view is woking and updatable using sql-plus.
If I query
select * from ALL_UPDATABLE_COLUMNS where table_name = 'SPV_BOQ_BOM_POS_ACTIVITIES';
in which 'SPV_BOQ_BOM_POS_ACTIVITIES' is the name of my view.
The question is: why if the view is updatable using SQL*Plus, is not updatable using Oracle Form 10gR2 ?
Someone could help me asap?
ThanksI removed on the datablock three items that are not showed, one of this is the Sysdate of update on the table for which the view is based.
I removed also the on-lock trigger and the update from the form is NOT working fine.
But for now I can still mantaing the ON-LOCK trigger.
Is not a priority to remove this trigger.
I still have the problem when the field is null, it mean that in the table SP_BOQ_BOM_POS_ACTIVITIES the record not exist.
I try now to explayn better.
SPV_BOQ_BOM_POS_ACTIVITIES is the name of the view.
SP_BOQ_BOM_POS_ACTIVITIES is the name of the table.
This are the desc
desc SPV_BOQ_BOM_POS_ACTIVITIES
Describing SPV_BOQ_BOM_POS_ACTIVITIES....
NAME Null? Type
BOQ_HEADER_ID NOT NULL NUMBER(12,0)
BB_ID NOT NULL NUMBER(12,0)
BOQ_ID NOT NULL NUMBER(12,0)
PROJ_ID NOT NULL VARCHAR2(10)
ACT_GROUP_CODE VARCHAR2(30)
TOTAL_QTY NUMBER
ACT_CODE_1 VARCHAR2(4000)
QTY_1 NUMBER
ACT_CODE_2 VARCHAR2(4000)
QTY_2 NUMBER
ACT_CODE_3 VARCHAR2(4000)
QTY_3 NUMBER
ACT_CODE_4 VARCHAR2(4000)
QTY_4 NUMBER
ACT_CODE_5 VARCHAR2(4000)
QTY_5 NUMBER
ACT_CODE_6 VARCHAR2(4000)
QTY_6 NUMBER
USR_ID NOT NULL VARCHAR2(10)
LMOD NOT NULL DATE
INT_REV NOT NULL NUMBER(6,0)
The field QTY_1, QTY_2.... QTY_6 are calculated with a customer stored function from the table SP_BOQ_BOM_POS_ACTIVITIES.
Also the field ACT_CODE_1, ACT_CODE_2, .... ACT_CODE_6 are calculated with a customer stored function from the table SP_BOQ_BOM_POS_ACTIVITIES.
desc SP_BOQ_BOM_POS_ACTIVITIES
Describing SP_BOQ_BOM_POS_ACTIVITIES....
NAME Null? Type
BBPA_ID NOT NULL NUMBER(12,0)
BOQ_HEADER_ID NOT NULL NUMBER(12,0)
BB_ID NOT NULL NUMBER(12,0)
BOQ_ID NOT NULL NUMBER(12,0)
PROJ_ID NOT NULL VARCHAR2(10)
ACT_GROUP_CODE NOT NULL VARCHAR2(30)
ACT_CODE NOT NULL VARCHAR2(30)
QTY NUMBER(12,0)
FLG_MANUAL_CHANGE VARCHAR2(1)
USR_ID NOT NULL VARCHAR2(10)
LMOD NOT NULL DATE
INT_REV NOT NULL NUMBER(6,0)
If I use SQL Navigator this insert working fine
insert into SPV_BOQ_BOM_POS_ACTIVITIES
(BOQ_HEADER_ID, BB_ID, BOQ_ID, PROJ_ID, ACT_GROUP_CODE, ACT_CODE_1, QTY_1)
values (5050, 5015, 30486, 'B39368', 'TEST', '0101010101010101', 1709)
1 row(s) inserted
Instead using the Screen, at runtime, I receive the message:
FRM-40400 Transation Complete: 1 records applied and saved
but nothing is saved in the table SP_BOQ_BOM_POS_ACTIVITIES, and the view SPV_BOQ_BOM_POS_ACTIVITIES contain the calculated QTY_1 for the 'key', with null value.
Moreover If in the field QTY_1 (NUMBER) I put a character, instead a Number, just to see if the Screen attempts or not an UPDATE or AN INSERT, the message is FRM-40509: Oracle Error. UNABLE TO UPDATE RECORD. Why happen an Update and not an INSERT using the Screen?
In effect, the trial using SQL navigator of the following statement
insert into SPV_BOQ_BOM_POS_ACTIVITIES
(BOQ_HEADER_ID, BB_ID, BOQ_ID, PROJ_ID, ACT_GROUP_CODE, ACT_CODE_1, QTY_1)
values (5050, 5015, 30486, 'B39368', 'TEST', '0101010101010101', 'r');
I got Invalid Number and it's ok as answer from the database.
Edited by: fmariani on 30-apr-2009 1.51 -
Dear All
Pls guide me how to update a complex View
Thanks for reading this post
*009*Hi again,
You probably need to write an [Instead-of-Trigger|http://download.oracle.com/docs/cd/B12037_01/server.101/b10759/statements_7004.htm#i2064426]
Regards
Peter -
I Need to create a complex (at least for me !!)view can some body throw some ideas
I have two tables
TABLE-1
NAME SYSTEM DT
AAA GRADE-A DATE
AAA GRADE-B DATE
BBB GRADE-A DATE
BBB GRADE-B DATE
CCC GRADE-B DATE
TABLE-2
NAME SYSTEM DT
DDD GRADE-C DATE
AAA GRADE-C DATE
BBB GRADE-C DATE
CCC GRADE-C DATE
Now I need to create a view with following details.
PV_MYVIEW
CLASS DT
CLASS-A DATE-A
CLASS-B DATE-B
Where as date DATE-A should be oldest date (least) from following
Table-1.date where name=AAA And SYSTEM=GRADE-A
Table-1.date where name=AAA And SYSTEM= GRADE-B
Table-1.date where name=BBB And SYSTEM= GRADE-A
Table-1.date where name=BBB And SYSTEM= GRADE-B
Table-1.date where name=CCC And SYSTEM= GRADE-B
Table-2.date where name=DDD And SYSTEM= GRADE-C
Table-2.date where name=AAA And SYSTEM= GRADE-C
Table-2.date where name=BBB And SYSTEM= GRADE-C
Table-2.date where name=CCC And SYSTEM= GRADE-C
Where as DATE-B should be oldest date (least) from following
Table-1.date where name=AAA And SYSTEM= GRADE-A
Table-1.date where name=AAA And SYSTEM= GRADE-B
Table-1.date where name=BBB And SYSTEM= GRADE-A
Table-1.date where name=BBB And SYSTEM= GRADE-B
Table-2.date where name=AAA And SYSTEM= GRADE-C
Table-2.date where name=BBB And SYSTEM= GRADE-C
As a solution for this, I Am thinking of first creating a intermediate view which comsist
Class, Name and Date and then from this view creating PV_MYVIEW..
Am i in right direction?
THanks in advnce for your timecreating an intermediate view is the worst thing to do!
try this
select
'CLASS-A' class, min(dt) DT
from
select DT from TABLE1
where (name='AAA' And SYSTEM='GRADE-A')
or (name='AAA' And SYSTEM='GRADE-B')
or (name='BBB' And SYSTEM='GRADE-A')
or (name='BBB' And SYSTEM='GRADE-B')
or (name='CCC' And SYSTEM='GRADE-B')
union all
select DT from TABLE2
where (name='AAA' And SYSTEM='GRADE-C')
or (name='BBB' And SYSTEM='GRADE-C')
or (name='CCC' And SYSTEM='GRADE-C')
or (name='DDD' And SYSTEM='GRADE-C')
union all
select
'CLASS-B', min(dt)
from
select DT from TABLE1
where (name='AAA' And SYSTEM='GRADE-A')
or (name='AAA' And SYSTEM='GRADE-B')
or (name='BBB' And SYSTEM='GRADE-A')
or (name='BBB' And SYSTEM='GRADE-B')
union all
select DT from TABLE2
where (name='AAA' And SYSTEM='GRADE-C')
or (name='BBB' And SYSTEM='GRADE-C')
You can for sure remove some duplicate clause and you should verify that the specifications are accurate
REgards
Laurent -
Hi,
I am trying to solve the following problem in Flex3:
I have layout with 4 quadrants ["Ch" for Child component
class]:
Ch1 Ch2
Ch3 Ch4
If I click a button in ch4 [i.e. state ch4a], it is supposed
to expand and cover Ch2, i.e.
Ch1
Ch4a
Ch3
Class Parent1 [inside Accordion]:
VBox
HBox1
<view:Ch1 width="60%" />
<view:Ch2 width="40%" />
/HBox1
HBox2
<view:Ch3 width="60%" />
<view:Ch4/>
/HBox2
/VBox
So in class Ch4 I created a view stateA which is based on
BaseState.
A) What makes more sense, fire event in class Ch4 on that
button click,
capture it in Parent1 and somehow [how?] change a layout so
that Ch2 is not there
but twice higher Ch4a is instead of it and no second part in
HBox2 ?
I would guess, ActionScript instead of MXML or is there a way
to express that in MXML?
Or how should that ActionScript look like ?
B) The other [easier] possibility is to get a handle to
Parent1 [parent container]
from the viewstateA of Ch4 and do something like:
<SetProperty target={this.parent} name="y" value="0">
Is it feasible? So far that didn't work for me. Any
suggestions?
Few other details:
1) it's all in Cairngorm AIR app;
2) that button in Ch4 is on one side a toggle button between
view states,
on the other side processing is completely different, but I
can handle that through calling
2 different private functions. I am saying only in one
state[BaseState] that event should be fired.
3) Background: Ch1 and Ch3 have lots of dropdowns, and what
user selected would be displayed
in Ch4A [that top portion], so user "Signs" that info, that's
a point of the whole screen.
Is there easy way to pass these selections to Ch4 ?
As of now, it's all buried deep inside some complex obscure
VOs .
Any help is very appreciated.
Thank you in advance,
Oleg.The robot method is quite slow, and it can only capture images that are actually on the screen in the foreground. In any case, I stumbled on this article: [Performance Improvement Techniques for JavaFX Applications|http://javafx.com/docs/articles/performance/] that mentions the 'cache' member variable of a Node/Group can be used to tell the system to convert the Node to a bitmap (internally) for performance improvement. I haven't done any testing of my own, but it's an easy addition if you have a performance sensitive app.
-
Hi Guys
I've got a setup as follows:
.........................mainview
...................... _____|______
...................... |...................|
....................view1.............view2
......... ________|________
.........|.............|.............|
defaultViewS viewS2 viewS3
So Say I want to change from view2 to view1 all I would have to do is:
ActionScript Code:
<s:Button label="Change to default view state"
click="currentState='view1';"/>
and it would open view1 with the default view (defaultViewS)
So the question is: How would I specify that instead of view opening to it's default state, how would I open it to it's non-default state(ie viewS2 or viewS3)
ThanksHi
Thanks for your help! but it's not quite what I need. I'm using quite a complex method to navigate about my app and I attempted to simplify it to make it easier to explain.
I'll explain my basic requirement and then I'll post my project compostion so you can see what I'm talking about.
Basically I have a tabbar which contains 6 viewstates. Those 6 viewstates and not simple views but themselves contain multiple views.
So if you click on tab button no 2 it will open tabButtonTwoView. tabButtonTwoView 3 views inside itself, when tabButtonTwoView is opened it opens to the default view. If you navigate away from tabButtonTwoView and return to it then you will see whichever view you were last looking at(it not neccesarily the default view)
So basically what I would like is that say you are on tabButtonOneView and you have a button there, then clicking that button would open tabButtonTwoView and then the view that has been specified, not the view that it opens by default or the view that you had open last.
Ok so that's the basic explanation. now I'll give you a breakdown of my project since it's a little bit more complex than that. I''ve also attached the project for you to have a look at.
you can download it here ( -- code removed -- )
So basically I'm using a MVCS methodology here along with robotlegs.
here's the basic way the nav works.
my main view contains these components:
<view:HeaderView id="header"
width="100%"
/>
<view:MainTabBar id="someTabBar" />
<view:ContentView id="content"/>
<view:FooterView id="footer"
width="100%"
/>
Tab Bar controls the main navigation of content using a mediator class:
package za.co.vw.projectname.view
import mx.collections.ArrayCollection;
import mx.events.StateChangeEvent;
import org.robotlegs.mvcs.Mediator;
import spark.events.IndexChangeEvent;
import za.co.vw.projectname.event.NavigationEvent;
public class MainTabBarMediator extends Mediator
public function get view():MainTabBar
return viewComponent as MainTabBar;
override public function onRegister():void
eventMap.mapListener(view, IndexChangeEvent.CHANGE, onSelectedIndexChange);
eventMap.mapListener(eventDispatcher, StateChangeEvent.CURRENT_STATE_CHANGE, onStateChange);
view.dataProvider = new ArrayCollection([{label:'About', name:'about'}, {label:'Apply', name:'apply'}, {label:'Date', name:'date'}, {label:'Watch', name:'watch'}, {label:'GTI', name:'gti'}]);
private function onSelectedIndexChange(event:IndexChangeEvent):void
if(!view.selectedItem)
return;
var navTo:String;
trace(view)
trace(view.selectedItem)
trace(view.selectedItem.label)
switch(view.selectedItem.label)
case "About":
navTo = NavigationEvent.ABOUT;
break;
case "Apply":
navTo = NavigationEvent.APPLY;
break;
case "Date":
navTo = NavigationEvent.DATE;
break;
case "Watch":
navTo = NavigationEvent.WATCH;
break;
case "GTI":
navTo = NavigationEvent.GTI;
break;
case "Home":
navTo = NavigationEvent.HOME;
break;
dispatch(new NavigationEvent(NavigationEvent.VIEW_CHANGE, navTo));
private function onStateChange(event:StateChangeEvent):void
var s:String = event.newState.slice(0, event.newState.indexOf("State"));
var tabItem:Object = getTabItemByName(s);
if(s == "home")
trace("going home");
view.selectedIndex = -1;
} else if(view.dataProvider.getItemIndex(tabItem) != view.selectedIndex)
trace("not going home, changing to "+s);
view.selectedItem = tabItem;
private function getTabItemByName(name:String):Object
for each(var obj:Object in view.dataProvider)
if(obj.name == name)
return obj;
return null;
which talks to and event class called NavigationEvent:
package za.co.vw.projectname.event
import flash.events.Event;
public class NavigationEvent extends Event
public static const VIEW_CHANGE:String = "viewChange";
public static const ABOUT:String = "about";
public static const APPLY:String = "apply";
public static const DATE:String = "date";
public static const WATCH:String = "watch";
public static const GTI:String = "gti";
public static const HOME:String = "home";
public var targetViewId:String;
public function NavigationEvent(type:String, targetViewId:String="", bubbles:Boolean=false, cancelable:Boolean=false)
super(type, bubbles, cancelable);
this.targetViewId = targetViewId;
most of my other components have mediators which dispatch navigation events, all of this being registered and and executed by the robotlegs frame works. The connections to the classes and their mediators are made in the ViewPrepCommand class:
package za.co.vw.projectname.controller
import org.robotlegs.mvcs.Command;
import spark.components.TabBar;
import za.co.vw.projectname.view.AboutView;
import za.co.vw.projectname.view.AboutViewMediator;
import za.co.vw.projectname.view.ContentView;
import za.co.vw.projectname.view.ContentViewMediator;
import za.co.vw.projectname.view.DateView;
import za.co.vw.projectname.view.DateViewMediator;
import za.co.vw.projectname.view.HeaderView;
import za.co.vw.projectname.view.HeaderViewMediator;
import za.co.vw.projectname.view.MainTabBar;
import za.co.vw.projectname.view.MainTabBarMediator;
import za.co.vw.projectname.view.MainView;
import za.co.vw.projectname.view.MainViewMediator;
public class ViewPrepCommand extends Command
override public function execute():void
mediatorMap.mapView(HeaderView, HeaderViewMediator);
mediatorMap.mapView(ContentView, ContentViewMediator);
mediatorMap.mapView(MainView, MainViewMediator);
mediatorMap.mapView(DateView, DateViewMediator);
mediatorMap.mapView(AboutView, AboutViewMediator);
mediatorMap.mapView(MainTabBar, MainTabBarMediator); -
Interactive report based on complex view
firefox 24 , apex 4.0 , db11gxe ,
hi all,
i created an interactive report with this code :
select c.client_id , c.client_name , c.age , c.email , c.phone ,
p.payment_date , sum(p.amount) "summary"
from clients c , payments p
where c.client_id = p.client_id
group by c.client_id , c.client_name , c.age , c.email , c.phone ,
p.payment_date;
but the problem was i could not delete any of the rows of the report , because there was no checkbox existed , so i created one with "apex_application.checkbox" , and i have got it now , but
i still can not delete any rows ,
i created a button to submit the page , and a process with this code
FOR i in 1..APEX_APPLICATION.G_F01.count
LOOP
DELETE FROM cp
WHERE client_id = APEX_APPLICATION.G_F01(i);
END LOOP;
and sure nothing was deleted , and i am facing this error
ORA-01732: data manipulation operation not legal on this viewWhat is the object "CP" ?
It sounds like it is a view. If it's the same you've used for the IR, then check out "key preserved views"
Oracle doc - http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#ADMIN11784
Tom Kyte - http://asktom.oracle.com/pls/asktom/f?p=100:11:6474092145067::::P11_QUESTION_ID:548422757486
There could be another issue once you address the error - depending on how you've defined apex_application.checkbox2 (the other is deprecated)
You may not be associating the correct value in g_f01 -
Ora-01401 error on a complex view
I'm getting a ora-01401 error on a view of the following structure.
SQL> desc vu_mat_product_msds_ingred;
Name Null? Type
MSDS_COMMENTS VARCHAR2(500)
MAT_PROD_MSDS_SOURCE VARCHAR2(30)
MISSING_INGRED_IND CHAR(1)
FLASH_POINT_COMMENTS VARCHAR2(100)
MSDS_ENTER_BY_ID NUMBER
CURRENT_AS_OF_DT DATE
MFG_REVISION_DT DATE
GROUP_ID NUMBER
CALC_VAPOR_PRESSURE NUMBER
CALC_VAPOR_PRESSURE_UOM VARCHAR2(5)
CALC_VAPOR_TEMPERATURE NUMBER
CALC_VAPOR_TEMPERATURE_UOM CHAR(1)
MAT_PROD_SPECIFIC_GRAVITY VARCHAR2(15)
CALC_SPECIFIC_GRAVITY NUMBER(6,4)
MAT_PROD_PROD_ID NOT NULL NUMBER
MAT_PROD_MFG_ID NOT NULL NUMBER
CLASS_ID NUMBER
CHEM_INV_IND CHAR(1)
SLED_EXEMPT_IND CHAR(1)
ACTIVE_IND CHAR(1)
WAIVER_REQD_IND CHAR(1)
ITEM_NAME VARCHAR2(60)
TRADE_NAME VARCHAR2(60)
HAZARD_CD CHAR(1)
FLASH_PT_IND CHAR(1)
FLASH_PT NUMBER
FLASH_PT_CMP CHAR(1)
FLASH_PT_SCALE_CD CHAR(1)
FLASH_PT_METHOD VARCHAR2(6)
VOC_QTY_GL NUMBER
VOC_QTY_PG NUMBER
VOC_QTY_OZ NUMBER
DISPOSAL_CD CHAR(1)
PRODUCT_STATE_CD CHAR(1)
TEMPERATURE_CD CHAR(1)
CTS_CD CHAR(1)
MAT_PROD_PPE_CD CHAR(1)
EXEMPTION_CD CHAR(1)
PCT_VOLAT_VOL NUMBER
PCT_VOLAT_WGT NUMBER
VAPOR_PRESSURE NUMBER
VAPOR_PRESSURE_UOM VARCHAR2(5)
VAPOR_TEMPERATURE NUMBER
VAPOR_TEMPERATURE_UOM CHAR(1)
VOC_COMMENTS VARCHAR2(250)
VOLATILE_LBS_GAL NUMBER
ARC1 VARCHAR2(2)
ARC2 VARCHAR2(2)
ARC3 VARCHAR2(2)
ARC4 VARCHAR2(2)
PURE_IND CHAR(1)
SITE_USAGE_IND CHAR(1)
PROPRIETARY_IND CHAR(1)
MSDS_PREP_DT DATE
MSDS_ENTER_DT DATE
HMOTW_ID NUMBER
ITEM_PRICE NUMBER(9,2)
RESTR_PRODUCT_IND CHAR(1)
CONTAINER_ID NOT NULL NUMBER
MAT_PROD_CONT_PROD_ID NOT NULL NUMBER
UPC_CD VARCHAR2(15)
SKU_NR VARCHAR2(60)
NSN VARCHAR2(15)
KIT_PART_CD VARCHAR2(2)
MFG_PART_NR VARCHAR2(60)
CONTAINER_SIZE NUMBER(10,4)
CONTAINER_SIZE_UOM VARCHAR2(3)
CNTAIN_KGRAMS_QTY NUMBER
MFGKIT_IND CHAR(1)
SEPARATE_IND CHAR(1)
TYP_CNTAIN_CD VARCHAR2(2)
CNTAIN_PRES_CD CHAR(1)
PROD_ST_CD CHAR(1)
PRODUCT_NR NOT NULL NUMBER(7)
PRODUCT_UI VARCHAR2(2)
MAT_PROD_MFG_MFG_ID NOT NULL NUMBER
CAGE NOT NULL VARCHAR2(5)
MFG_UPC VARCHAR2(7)
MFG_NAME NOT NULL VARCHAR2(50)
MFG_ADDR1 VARCHAR2(100)
MFG_ADDR2 VARCHAR2(100)
MFG_CITY VARCHAR2(100)
MFG_STATE_PROVINCE VARCHAR2(60)
MFG_POSTAL_CD VARCHAR2(30)
MFG_COUNTRY VARCHAR2(40)
MFG_EMRG_PHONE VARCHAR2(40)
MFG_INFO_PHONE VARCHAR2(40)
WEB_SITE_URL VARCHAR2(500)
PROP_SHIP_NM_ID NUMBER
MAT_PROD_MSDS_PPE_CD CHAR(1)
MSDS_ID NOT NULL NUMBER
MAT_PROD_MSDS_PROD_ID NOT NULL NUMBER
MAT_PROD_MSDS_MSDS_SOURCE VARCHAR2(30)
PUBLICATION_CD CHAR(1)
HEALTH_CD CHAR(1)
CONTACT_CD CHAR(1)
FIRE_CD CHAR(1)
REACT_CD CHAR(1)
PROT_EYE CHAR(1)
PROT_SKIN CHAR(1)
PROT_RESP CHAR(1)
FOCAL_PT_CD VARCHAR2(2)
SUPPLY_IM VARCHAR2(3)
MSDS_PREPR_NAME VARCHAR2(50)
PREP_COMPANY VARCHAR2(40)
PREP_ADD1 VARCHAR2(100)
PREP_ADD2 VARCHAR2(100)
PREP_CITY VARCHAR2(100)
PREP_STATE_PROVINCE VARCHAR2(60)
PREP_POSTAL_CD VARCHAR2(30)
MSDS_SHIP_NAME VARCHAR2(600)
MSDS_PKG_GRP VARCHAR2(3)
MSDS_UN_NA VARCHAR2(2)
MSDS_UN_NA_NR VARCHAR2(5)
MSDS_UN_NA_PAGE VARCHAR2(5)
SPEC_NR VARCHAR2(20)
SPEC_TYP_GR_CLS VARCHAR2(20)
HAZ_STOR_COMP_CD VARCHAR2(5)
HAZ_CATEGORY_1 VARCHAR2(10)
HAZ_CATEGORY_2 VARCHAR2(10)
NRC_LIC_NR VARCHAR2(15)
NET_PROP_WGT_AMMO VARCHAR2(7)
APPEAR_ODOR VARCHAR2(80)
BOIL_PT VARCHAR2(11)
MELT_PT VARCHAR2(11)
VPR_PRESSURE VARCHAR2(30)
VPR_DENSITY VARCHAR2(30)
ONETOONE_ID NUMBER(1)
VPR_TEMP VARCHAR2(30)
MAT_PROD_MSDS_SPECIFIC_GRAVITY VARCHAR2(15)
DECOMP_TEMP VARCHAR2(11)
EVAP_RATE VARCHAR2(25)
SOLUB_WATER VARCHAR2(20)
CHEM_PH VARCHAR2(11)
CORROSION_RATE VARCHAR2(8)
FLASH_POINT VARCHAR2(20)
LOW_EXPL_LTD VARCHAR2(12)
UP_EXPL_LTD VARCHAR2(12)
EXTINGUISH_MEDIA VARCHAR2(500)
SP_FIRE_FGT_PROCD VARCHAR2(800)
UN_FIRE_EXPL_HAZ VARCHAR2(500)
STABILITY VARCHAR2(3)
COND_AVOID_STAB VARCHAR2(120)
MAT_AVOID VARCHAR2(500)
HAZ_DECOMP_PROD VARCHAR2(500)
HAZ_POLY_OCCUR VARCHAR2(3)
COND_AVOID_POLY VARCHAR2(120)
LD50_LC50_MIX VARCHAR2(40)
ROUTE_ENTRY_INHALE VARCHAR2(3)
ROUTE_ENTRY_SKIN VARCHAR2(3)
ROUTE_ENTRY_INGEST VARCHAR2(3)
HLTH_HAZ_ACUTE_CRON VARCHAR2(500)
CARCIN_NTP VARCHAR2(10)
CARCIN_IARC VARCHAR2(10)
CARCIN_OSHA VARCHAR2(10)
STORAGE_TYPE VARCHAR2(10)
EXPL_CARCIN VARCHAR2(500)
SIGN_SYMPT_OVREXPOS VARCHAR2(600)
MED_COND_AGGR_EXPOS VARCHAR2(500)
EMRG_1ST_AID_PROCD VARCHAR2(600)
STEP_MAT_REL_SPILL VARCHAR2(500)
NEUTRAL_AGENT VARCHAR2(80)
WAST_DISP_METHOD VARCHAR2(600)
HAND_STOR_PRECAUT VARCHAR2(600)
OTHER_PRECAUT VARCHAR2(500)
RESP_PROT VARCHAR2(350)
VENTILATION VARCHAR2(120)
PROT_GLOVE VARCHAR2(120)
EYE_PROT VARCHAR2(120)
OTHER_PROT_EQUIP VARCHAR2(500)
WORK_HYG_PRACT VARCHAR2(500)
SUPP_SAFE_HLTH_DATA VARCHAR2(500)
SPEC_HAZ_AND_PREC VARCHAR2(650)
CHRONIC_CD CHAR(1)
CARCINOGEN_CD CHAR(1)
ACUTE_CD CHAR(1)
REPRO_TOXIN_IND CHAR(1)
ROUTE_ENTRY_EYES VARCHAR2(3)
INGREDIENTINFORMATION MAT_PRODUCT_INGRED_LIST
SQL> desc mat_product_ingred_list;
mat_product_ingred_list TABLE OF MAT_PRODUCT_INGRED_TYPE
Name Null? Type
INGRED_ID NUMBER
PRODUCT_ID NUMBER
MCM_CHEM_MSTR_ID NUMBER
CHEM_VAPOR_ID NUMBER
INGRED_SEQ_NR VARCHAR2(2)
INGRED_NIOSH VARCHAR2(9)
PERCNT VARCHAR2(7)
CALC_PERCNT NUMBER
OSHA_PEL VARCHAR2(20)
ACGIH_TLV VARCHAR2(22)
REC_LIMIT VARCHAR2(20)
MCM_EXEMPT_IND CHAR(1)
VOC_REACTIVITY_CD VARCHAR2(2)
STATE_POLLUTANT_CD VARCHAR2(10)
PERCENT_LOW NUMBER
PERCENT_HIGH NUMBER
PROPRIETARY_IND CHAR(1)
MPI_CHEM_MSTR_ID NUMBER
CHEM_CAS_NO VARCHAR2(12)
CHEM_TYPE VARCHAR2(1)
CHEM_NAME VARCHAR2(255)
CHEM_FORMULA VARCHAR2(35)
CHEM_RCRA_CD VARCHAR2(4)
MOLECULAR_WGT NUMBER(7,3)
MOLECULAR_WGT_SOURCE VARCHAR2(100)
VAPOR_PRESSURE NUMBER(8,2)
VAPOR_PRESSURE_UOM VARCHAR2(5)
VAPOR_PRESSURE_SOURCE VARCHAR2(100)
VAPOR_TEMP NUMBER
VAPOR_TEMP_UOM CHAR(1)
IRIS_IND CHAR(1)
RPT_QTY NUMBER
TPQ1 NUMBER
TPQ2 NUMBER
IC VARCHAR2(3)
OZONE_IND CHAR(1)
EHS_IND CHAR(1)
EPCRA_IND CHAR(1)
CARC_IND CHAR(1)
MPI_EXEMPT_IND CHAR(1)
CHEM_NIOSH VARCHAR2(9)
STATE_CAP NUMBER
LOCAL_CAP NUMBER
TYPE_CD CHAR(1)
CHEM_ACTIVE_IND CHAR(1)
any ideas of why the ora-01401?
Thanks in advance.Did you by any chance buy a Re: Function will not run (and shows with red cross in SQL Developer) from Re: Calling pipelined table functions
-
Why the full table scans in this query on a complex view?
Does someone have an idea of why the FTSs are in here? As I mentioned before, it seems to be using the indexes where I figured it would. I just don't see why it needs to FTS ALL tables involved in the view to put the combined result sets together.
Thanks
Here's the plan
PLAN_TABLE_OUTPUT
Plan hash value: 4040654044
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 3060 | 116K| 1404 (2)| 00:00:17 |
|* 1 | FILTER | | | | | |
| 2 | VIEW | V_MOD2_V3 | 305K| 11M| 1259 (2)| 00:00:16 |
| 3 | UNION-ALL | | | | | |
| 4 | TABLE ACCESS FULL | MOD_TAB1 | 101K| 4880K| 420 (2)| 00:00:06 |
| 5 | TABLE ACCESS FULL | MOD_TAB2 | 101K| 4880K| 420 (2)| 00:00:06 |
| 6 | TABLE ACCESS FULL | MOD_TAB3 | 101K| 4880K| 420 (2)| 00:00:06 |
|* 7 | VIEW | V_MOD2_V3 | 3 | 156 | 6 (0)| 00:00:01 |
| 8 | UNION-ALL | | | | | |
|* 9 | TABLE ACCESS BY INDEX ROWID| MOD_TAB1 | 1 | 53 | 2 (0)| 00:00:01 |
|* 10 | INDEX UNIQUE SCAN | MOD_TAB1_PK | 1 | | 1 (0)| 00:00:01 |
|* 11 | TABLE ACCESS BY INDEX ROWID| MOD_TAB2 | 1 | 53 | 2 (0)| 00:00:01 |
|* 12 | INDEX UNIQUE SCAN | MOD_TAB2_PK | 1 | | 1 (0)| 00:00:01 |
|* 13 | TABLE ACCESS BY INDEX ROWID| MOD_TAB3 | 1 | 53 | 2 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | MOD_TAB3_PK | 1 | | 1 (0)| 00:00:01 |
| 15 | SORT AGGREGATE | | 1 | 13 | | |
| 16 | VIEW | V_MOD2_V3 | 219K| 2792K| 139 (6)| 00:00:02 |
| 17 | UNION-ALL | | | | | |
|* 18 | INDEX FAST FULL SCAN | MOD_TAB1_ST_IDX | 101K| 398K| 51 (6)| 00:00:01 |
|* 19 | INDEX FAST FULL SCAN | MOD_TAB2_ST_IDX | 101K| 398K| 52 (6)| 00:00:01 |
|* 20 | INDEX RANGE SCAN | MOD_TAB3_ST_IDX | 16000 | 64000 | 35 (0)| 00:00:01 |
Message was edited by:
GaffAlas, ALL of that was in the original post I put up a few weeks ago. I meant to reply to it in the message you saw but instead I "edited" it and the original post is now gone!
Suffice it to say that the 3 tables that make up the view are identical, have the proper columns indexed and have statistics generated. The view you see the explain plan for is a view that just does a "UNION ALL" of each of the 3 mod_tab tables.
As I figured it would, a query on the view uses the indexes to figure out which rows of each underlying table have data for the result set based on the "where" clause , and that is where you see the index range scan, etc. What I don't understand is the part in bold. Assuming all rows in all tables that make up the view have been indentified by these index range scans, what requires the 3 full table scans at the end? The explain plan in SQL Developer (Raptor) will show why each of the other things is there, but not the full table scans.
I am getting a few hundred result set rows out of 100,000-200,000 rows altogether so I can't imagine a full table scan on any of these underlying tables being the right way to go (and look at the cost in the plan).
Thanks
Maybe you are looking for
-
How can I create an effect to cycle through several sets of 12 thumbnail images rather than just one
Hello I've searched everywhere i can think of and had no luck so thought it's about time i asked for help. How do I create an effect where a group of 12 thumbnail images (all with clickable links) can scroll across by clicking a button to reveal anot
-
Edit in PhotoShop CC 2014 issue
When in Lightroom 5 and I select "edit in Adobe Photoshop CC 2014" it doesn't create a copy in tif or psd format (or jpg format) like it did in previous versions. A box use to pop up allowing me to set the file type, color space etc then in Lightroo
-
Hi, I have portal 10.1.4 I am using dynamic page. I have header and footer portlets and in between I have created a dynamic page with the contents as follows <iframe name = "myframe" src="http://128.222.112.36:8882/Login-ViewController-context-root/f
-
When I try to play a video on Facebook, I get the sound, but it is only a black screen. I thought the prob was only with FB, but then I tried to look at a video on Moviefone, and I have the same problem. I changed the website storage settings to un
-
i can't seem to close individual tabs anymore, the (x) has dissapeared.? also, i cant seem to quit my internet. right click and quit ?? could some one please help meeee? thanks