Other query on RFx?
Hi Friends
how to send requirements from MM to Rfx directly if we are not using EBP and how many requirements can be sent from MM to RFx directly.
If requirements are sent from MM to RFx directly and if there is a change in requirements later on, can we send these requirements again from MM to RFx and RFx will use these requirements and not the previous requirements
Regards
Timothy
Hi
Implement method IF_EX_BBP_EBPXML_OUT_BADI~REQUESTFORQUOTE of BAdi BBP_EBPXML_OUT_BADI for sending the MM requirements to create direct RFx in SRM7.0 system.
Rgds/Kiran
Similar Messages
-
Running query based on other query result
Hi Again Friends.
first of all i am very much thankful for members who sent me prompt response and been helping for last 2 days.I am again with query,maybe a lame one.
I want to run a query based on record return from previous query.FOr instance i have query
Select sum(marks) from studentMarks,student_id where course_Id=4 and student_Id
IN
(Select StudentId from Student where dept_id=3)
the courseID and studentID are being repeated in the above table
now I want to show Student Names with the marks Obtained and who belong to dept_id=3,i want to run other query to get Name based on StudentId resutned from previous one.
Is there anyway to do this in oracle to save result in some resultSe and use it later?
ThankyouDo you mean something like:
Select sum(marks), S.StudentId, S.StudentName
from StudentMarks M
, Student S
where S.course_Id=4
and M.Student_id = S.StudentId
and S.student_Id
IN
(Select StudentId from Student where dept_id=3)
group by StudentId, StudentName -
Output of One Query is input to other Query??
Hi All,
How to make output of one query as input to other Query and what are the points to be takeb care of to do it?
regards,
murali.
Message was edited by: MuraliHallo
You got a second query where you also have 0date. Based on the selection on the second query, you get some value for 0date. this values are then passed in background to the first query which will show you the output based on the input date of the first query. You can also have othe variable in the query.
http://help.sap.com/saphelp_nw04/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm
I hope everything is fine.
Mike -
Alternative for result from other query and merge dimension option option
Hi Everyone ,
Am Developing one webi report over bex Query.
Actual scenario is output of one webi report should be the input of other webi report.
Eg:
Table 1
2010 Cus 1
2010 Cus 2
2011 Cus 3
table 2
cus1 m1 100
cus2 m2 200
Cus3 m1 400
Report 1 designing
First report created using table 1 and prompt for year
Report 2 designing
Second report created using table2 and prompt for customer
So when am Running first report it will ask for parameter year and if am selecting 2010 then the report will return C1 and C2
this out put should e the input for report 2.
So out put will be 100+200=300
NOTE:1. Result from other query is not working in webi filter pane since am building on olap universe.
2. Merge Dimension performance is very slow .
Any Solution ?
Regards,
Kannan.BHi,
Thanks for ur reply
As you said , If am giving hyperlink to other report .
Eg: User selected Tamilnadu then report 1 opened then he has to click the some cell or hyperlink cell to view the actual report(2nd report).
Suppose user Clicked that hyperlink cell and 2nd report opened and he is viewing the data for Tamil nadu and he decided to see the report for
Andrapradesh so according to this logic he has to select first report and refresh the data for Andra and from there he has to come to 2nd report.
totally 4 screen will be opened for seeing the two states report.
So Some other alternative....... -
Need to pass result of one query as input to the other query
Hi All,
We have a search page in which a query executes based on the input search criteria and gives result in a table format.
now we need to pass this result for each row of the result table to the input of the other query automatically.
Please provide any solution for this.
TIA,
BobI tried using setPropertyListener & setActionListener but data is not getting passed in my case.
I am trying to pass 4 values(TransactionId, InstanceId, InterfaceId, PayloadSequence) highlighted in bold as input to the webservice.
created a coumn "Payload" and used setPropertyListener in that.
But data is not getting passed to the popup.
I even tried hardcoding the values in the SetPropertyListener but then also hardcoded values are also not getting assigned to the input of webservice.
what am i doing wrong?
Below is the code.
<af:table value="#{bindings.SerachResultVO1.collectionModel}" var="row"
rows="#{bindings.SerachResultVO1.rangeSize}"
emptyText="#{bindings.SerachResultVO1.viewable ? 'No data to display.' : 'Access Denied.'}"
fetchSize="#{bindings.SerachResultVO1.rangeSize}"
rowBandingInterval="0"
selectionListener="#{bindings.SerachResultVO1.collectionModel.makeCurrent}"
rowSelection="multiple" id="t1">
<af:column sortProperty="*InterfaceId*" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.InterfaceId.label}"
id="c6" rendered="false">
<af:outputText value="#{row.InterfaceId}" id="ot1">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.SerachResultVO1.hints.InterfaceId.format}"/>
</af:outputText>
</af:column>
<af:column sortProperty="*InstanceId*" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.InstanceId.label}"
id="c10" rendered="false">
<af:outputText value="#{row.InstanceId}" id="ot6"/>
</af:column>
<af:column sortProperty="*TransactionId*" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.TransactionId.label}"
id="c8">
<af:outputText value="#{row.TransactionId}" id="ot10"/>
</af:column>
<af:column sortProperty="*PayloadSequence*" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.PayloadSequence.label}"
id="c7" rendered="false">
<af:outputText value="#{row.PayloadSequence}" id="ot11"/>
</af:column>
<af:column sortProperty="StatusFlag" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.StatusFlag.label}"
id="c2">
<af:outputText value="#{row.StatusFlag}" id="ot8"/>
</af:column>
<af:column sortProperty="CreationDate" sortable="true"
headerText="#{bindings.SerachResultVO1.hints.CreationDate.label}"
id="c9">
<af:outputText value="#{row.CreationDate}" id="ot3">
<af:convertDateTime pattern="#{bindings.SerachResultVO1.hints.CreationDate.format}"/>
</af:outputText>
</af:column>
<af:column id="c12" headerText="Payload">
<af:popup id="p1" contentDelivery="lazyUncached">
<af:dialog id="d1" type="ok" resize="on">
<af:panelFormLayout id="pfl4">
<af:panelLabelAndMessage label="#{bindings.intname.hints.label}"
id="plam1">
<af:outputText value="#{bindings.intname.inputValue}"
id="ot13"/>
</af:panelLabelAndMessage>
<af:panelLabelAndMessage label="#{bindings.payload_data.hints.label}"
id="plam2">
<af:outputText value="#{bindings.payload_data.inputValue}"
id="ot12"/>
</af:panelLabelAndMessage>
</af:panelFormLayout>
</af:dialog>
</af:popup>
<af:commandLink
text="view Payload"
id="cl1"
actionListener="#{bindings.getPayload.execute}"
disabled="#{!bindings.getPayload.enabled}">
<af:showPopupBehavior popupId="p1"/>
<af:setPropertyListener type="action"
to="#{bindings.trans_id.inputValue}"
from="#{row.bindings.TransactionId.inputValue}"/>
<af:setPropertyListener to="#{bindings.inst_id.inputValue}"
type="action"
from="#{row.bindings.InstanceId.inputValue}"/>
<af:setPropertyListener to="#{bindings.interfaceid.inputValue}"
from="#{row.bindings.InterfaceId.inputValue}"
type="action"/>
<af:setPropertyListener to="#{bindings.payload_seq.inputValue}"
type="action" from="#{'5'}"/>
</af:commandLink>
</af:column>
</af:table>
Edited by: Bob on Feb 7, 2011 11:24 PM -
Searching Sequence query in other query
Hi
With code below when in table TMP_EQUIP_CRM have QTD =2 It return me 2 rows, when QTD = 3 return me 3 rows ....etc
SQL> SELECT t2.loc_cntr_id_sn, t2.loc_product_sn,
2 ROW_NUMBER () OVER (PARTITION BY t2.loc_cntr_id_sn, setid, companyid, effdt, setid_product, loc_product_sn ORDER BY linha) seqno_item_sn
3 FROM (SELECT t1.*, ROWNUM linha
4 FROM sysadm.tmp_equip_crm t1,
5 (SELECT LEVEL l
6 FROM DUAL
7 CONNECT BY LEVEL <= 100)
8 WHERE l <= t1.qtd) t2
9 /
LOC_CNTR_ID_SN LOC_PRODUCT_SN SEQNO_ITEM_SN
10 KIT01 1
10 KIT01 2
1000 KIT01 1
100000 KIT01 1
100009 KIT01 1
100009 KIT01 2
10001 KIT01 1Now I must search a Date for each row, example of my query
SELECT active_dt
INTO v_active_date
FROM (SELECT cpc.active_dt, DENSE_RANK () OVER (ORDER BY cpc.active_dt, cpc.ROWID) linha
FROM smt_360_conta_kenan@arbor smt, cmf_package_component@arbor cpc
WHERE smt.convenio = p_external_id
AND cpc.parent_account_no = smt.account_no
AND cpc.component_id = p_component_id
AND cpc.inactive_dt IS NULL) t1
WHERE t1.linha = p_linha;This Query can return me nothing, 1 or more rows,
Where p_linha must to be equal SEQNO_ITEM_SN from first query , If not found for a number, search with preview number thru 1, if Not found for nothing then must return only NULL
Example :
100010 KIT01 1
100010 KIT01 2
100010 KIT01 3
100010 KIT01 4
100010 KIT01 5
It must return me 5 dates
If there is only 3 records with parameters , then the records 4 and 5 will have same date from record 3
To do It with cursor is easy, but I must to do in unique query (SELECT), is htere some way ?
thank you in advancePlease post the execution plans of the query from both databases.
Do you have proper statistics gathered on these tables? -
Problem with report with filter from other query
Hi All,
I have some report with two queries:
1. First contain Date(1) converted to int (like 20140807). This query calculate Date as getdate minus number of day which I could define (for example -8 return getdate minus 8 days).
2. The second contain also Date(2) converted to int. I would like to add filter where Date(2) will be on the list from results in query 1. When I try do this I receive:
Database error: [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.. (IES 10901) (WIS 10901)
When I have changed number of days from -8 to -30 in query 1, query 2 return some records.
I do not know why it work sometimes, sometimes not.Sathish, but I use defined by me objects (today number + days) and (today number) in BO so I do not want to change it manually.
Arijit, the second query without any filters return records with Date(2) equal 20140715. When I add filter with Date(2) = returned data from query 1 (getdate minus 8 days) I receive error. I know that getdate minus 8 days return dates (20140807...20140801) so 20140715 is out of the range. In this case query should return blank page.
When I change query 1 from 8 to 30 days is working correctly because 20140715 is in this range. Maybe it help to help me
This is condition from query1:
WHERE
dbo_Date.DateID(1) BETWEEN year( ( cast(convert(varchar, dateadd(day,@Prompt('Enter the number of X days', 'N',,Mono,Free, Persistent),getdate()) , 102) as datetime) ) )*10000 + month(( cast(convert(varchar, dateadd(day,@Prompt('Enter the number of X days', 'N',,Mono,Free, Persistent),getdate()) , 102) as datetime) ))*100 + day( ( cast(convert(varchar, dateadd(day,@Prompt('Enter the number of X days', 'N',,Mono,Free, Persistent),getdate()) , 102) as datetime) ) ) AND year( getdate() )*10000 + month(getdate())*100 + day( getdate() )
but I use the same condition in other reports and it is work. -
BI-IP How to display doc/comments links for InfoProviders in other Query.
Hi All,
We are using standard document feature to store document/comment about the plan data shown in the planning query. Relevant characteristics have the property 'characteristics is document attrib' turned on/selected for this purpose.
Finally the comments attaching absolutely correct. But I can`t display icon- "Document links for InfoProvider " in the cell and attached document in any another query. Besides that query, where this comment was attached.
This problem is described in SAP Library ( Link:[http://help.sap.com/saphelp_sem40bw/helpdata/EN/a6/607e3ddf01910fe10000000a114084/frameset.htm]).
Please, help me delete dependence of relevance in the query.Hi,
if the documents don't appear in other queries, then the characteristic values that the documents are linked to are most likely different. Check the values in RSA1 > Documents.
Also understand that in 7.0 there are now two possible document repositories:
http://help.sap.com/saphelp_nw70/helpdata/en/42/594e3c6bf4233fe10000000a114084/frameset.htm
A migration might be required for historical documents:
http://help.sap.com/saphelp_nw70/helpdata/en/43/c1475079642ec5e10000000a11466f/frameset.htm
Regards,
Marc
SAP NetWeaver RIG -
HI Friends
Is this landscape possible MM-RFX-SUS. Is this a std scenario for supplier enablement.
Need of integrating RFx with MDM.
Regards
IanHI Ian,
Did you mean that MM(PR)> SRM RFx(via soco/cppr)> RFx response> MM PO> SUS PO?
If yes then it is supported as standard scenario.
Best Regards
Mradul -
Ugent issuedata erased in othe query due to some other query transportation
hi all,
today i transported some queries,the end user is reporting that data is erased in other queries,is it due to the problem of todays transported queries or that individual queries.how data is lossed in transported queries.urgent issue kindly reply asap.iam waiting for your reply
thanksin adavancefirst make sure did you transport the query that the user is complaining? if so make sure what are the additional changes you have done for that particular queries ...
try to cross check them with the queries that are there in the production with your queries in the dev.. -
How to stop specific query attached with other query in same process using With method
Would it be possible to stop one query out of two queries attached to single process...because i see it is returning one IDisposable inteface...if i call dispose() method...two queries are stopped/killed...
So how to stop specific query which is combined with other queries in a same process at runtime i.e., attach or detach kind of thing?
Thanks in advance
SatishYes, the overloading of the term "Process" can be confusing. In SI, depending on your edition of StreamInsight, a process can run on one or more threads from a pool of threads and are scheduled together. Don't think of a process necessarily as a single
thread or multiple processes as a method of multi-threading.
As for a limit on the number of queries, there isn't a hard limit that I'm aware of. However, there will be a practical limit that will vary based on the complexity of the query, the event rate and your hardware (# of cores). If you are using Standard Edition,
this limit is much smaller as you only have a single scheduler thread. With Premium Edition, you have a scheduler thread for each core on the machine so you can get higher throughput and lower latency. But if you have, say, 4 cores on the machine (don't count
hyperthreaded cores, just real cores), 100 queries and a target throughput of 100K events/second, you'll likely have some problems. At 1K events/sec, you'd likely be fine though. With 32 cores and Premium Edition, you'd probably be OK with 100K events/sec.
So ... like I said, it depends.
DevBiker (aka J Sawyer)
Microsoft MVP - Sql Server (StreamInsight)
If I answered your question, please mark as answer.
If my post was helpful, please mark as helpful. -
Toystore: Using findByKey instead of other query methods
I think I already know the answer to this but I cannot exactly find supporting documentation. I would like to know when it is appropriate to use findByKey over setting the where clause parameters and calling executeQuery. I notice the Toystore sample does this wherever possible. When do I know I should use it in my application and why? As a standard practice, I have been using the where clause method. Are there any pitfalls to using findByKey?
Thanks for the response. I tried List Item, but it isn't what i sought as it is a display-only field. I could say Update allowed false, but still people ask question why the list is provided when we cant change it.
I found an interesting solution to it.
On the database field (say change_allowed) if 'Y' denotes "Yes" and 'N' denotes "No" then use Property Palette and change the Column Name (under Database Group) to decode(change_allowed,'Y','Yes','N','No') change_allowed and increase the size of the column to 5 instead of 1. Works amazingly well :) -
Can't add much to the question
Firefox 4 later use a combined Stop/Reload/Go button that is positioned at the right end of the location bar.<br />
During the page load process it shows as a Stop button and after the loading has finished the button is changed to a Reload button.<br />
If you type in the location bar then that button becomes a Go button.<br />
Middle-click the Reload button to duplicate the current tab to a new tab.
To move the Stop and Reload buttons to their position to the left of the location bar you can use these steps:
* Open the Customize window via "View > Toolbars > Customize" or via "Firefox > Options > Toolbar Layout"
* Drag the Reload and Stop buttons to their previous position to the left of the location bar.
* Set the order to "Reload - Stop" to get a combined "Reload/Stop" button.
* Set the order to "Stop - Reload" or separate them otherwise to get two distinct buttons. -
About give from one query to other the same value of a variable
Hi Gurus,
my problem is About give from one query to other the same value of a variable, i have a wad with a view, and this wad has some bottoms in javascript to go to anothers wad with charts, the problem is when i ran the query one, i put a value = calyear:2008 (Obligatory Variable), but when i click the bottom to go to the other query with the same variable, he ask me again a value,
i want write a value just one time, and the others wad can recieve the first value that i put when the wad opened.
i really need it , thanks !Hello Jorge,
What you need here is Replacement path variable. Check out this link for more details:
http://help.sap.com/saphelp_nw2004s/helpdata/en/bd/589b3c494d8e15e10000000a114084/content.htm
In the second query where you need the value (calyear:2008 from first query) create a Variable for calyear of type Replacement path, in Replacement tab you can select either query or variable by which it has to replaced. In your case, it has to be variable from the first query.
Do let me know if this works. If this does not work I suggest you to use Web APIs to replace the variable values using Web APIs. Check out the details:
http://help.sap.com/saphelp_nw2004s/helpdata/en/29/4d15422ecce02ce10000000a1550b0/frameset.htm
Hope this helps.
Regards,
Srini -
Pagination query help needed for large table - force a different index
I'm using a slight modification of the pagination query from over at Ask Tom's: [http://www.oracle.com/technology/oramag/oracle/07-jan/o17asktom.html]
Mine looks like this when fetching the first 100 rows of all members with last name Smith, ordered by join date:
SELECT members.*
FROM members,
SELECT RID, rownum rnum
FROM
SELECT rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
WHERE rownum <= 100
WHERE rnum >= 1
and RID = members.rowidThe difference between this and the one at Ask Tom's is that my innermost query just returns the ROWID. Then in the outermost query we join the ROWIDs returned to the members table, after we have pruned the ROWIDs down to only the chunk of 100 we want. This makes it MUCH faster (verifiably) on our large tables, as it is able to use the index on the innermost query (well... read on).
The problem I have is this:
SELECT rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindateThis will use the index for the predicate column (last_name) instead of the unique index I have defined for the joindate column (joindate, sequence). (Verifiable with explain plan). It is much slower this way on a large table. So I can hint it using either of the following methods:
SELECT /*+ index(members, joindate_idx) */ rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
SELECT /*+ first_rows(100) */ rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindateEither way, it now uses the index of the ORDER BY column (joindate_idx), so now it is much faster as it does not have to do a sort (remember, VERY large table, millions of records). So that seems good. But now, on my outermost query, I join the rowid with the meaningful columns of data from the members table, as commented below:
SELECT members.* -- Select all data from members table
FROM members, -- members table added to FROM clause
SELECT RID, rownum rnum
FROM
SELECT /*+ index(members, joindate_idx) */ rowid as RID -- Hint is ignored now that I am joining in the outer query
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
WHERE rownum <= 100
WHERE rnum >= 1
and RID = members.rowid -- Merge the members table on the rowid we pulled from the inner queriesOnce I do this join, it goes back to using the predicate index (last_name) and has to perform the sort once it finds all matching values (which can be a lot in this table, there is high cardinality on some columns).
So my question is, in the full query above, is there any way I can get it to use the ORDER BY column for indexing to prevent it from having to do a sort? The join is what causes it to revert back to using the predicate index, even with hints. Remove the join and just return the ROWIDs for those 100 records and it flies, even on 10 million records.
It'd be great if there was some generic hint that could accomplish this, such that if we change the table/columns/indexes, we don't need to change the hint (the FIRST_ROWS hint is a good example of this, while the INDEX hint is the opposite), but any help would be appreciated. I can provide explain plans for any of the above if needed.
Thanks!Lakmal Rajapakse wrote:
OK here is an example to illustrate the advantage:
SQL> set autot traceonly
SQL> select * from (
2 select a.*, rownum x from
3 (
4 select a.* from aoswf.events a
5 order by EVENT_DATETIME
6 ) a
7 where rownum <= 1200
8 )
9 where x >= 1100
10 /
101 rows selected.
Execution Plan
Plan hash value: 3711662397
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 521K| 192 (0)| 00:00:03 |
|* 1 | VIEW | | 1200 | 521K| 192 (0)| 00:00:03 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 1200 | 506K| 192 (0)| 00:00:03 |
| 4 | TABLE ACCESS BY INDEX ROWID| EVENTS | 253M| 34G| 192 (0)| 00:00:03 |
| 5 | INDEX FULL SCAN | EVEN_IDX02 | 1200 | | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("X">=1100)
2 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
443 consistent gets
0 physical reads
0 redo size
25203 bytes sent via SQL*Net to client
281 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
101 rows processed
SQL>
SQL>
SQL> select * from aoswf.events a, (
2 select rid, rownum x from
3 (
4 select rowid rid from aoswf.events a
5 order by EVENT_DATETIME
6 ) a
7 where rownum <= 1200
8 ) b
9 where x >= 1100
10 and a.rowid = rid
11 /
101 rows selected.
Execution Plan
Plan hash value: 2308864810
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 201K| 261K (1)| 00:52:21 |
| 1 | NESTED LOOPS | | 1200 | 201K| 261K (1)| 00:52:21 |
|* 2 | VIEW | | 1200 | 30000 | 260K (1)| 00:52:06 |
|* 3 | COUNT STOPKEY | | | | | |
| 4 | VIEW | | 253M| 2895M| 260K (1)| 00:52:06 |
| 5 | INDEX FULL SCAN | EVEN_IDX02 | 253M| 4826M| 260K (1)| 00:52:06 |
| 6 | TABLE ACCESS BY USER ROWID| EVENTS | 1 | 147 | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("X">=1100)
3 - filter(ROWNUM<=1200)
Statistics
8 recursive calls
0 db block gets
117 consistent gets
0 physical reads
0 redo size
27539 bytes sent via SQL*Net to client
281 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
101 rows processed
Lakmal (and OP),
Not sure what advantage you are trying to show here. But considering that we are talking about pagination query here and order of records is important, your 2 queries will not always generate output in same order. Here is the test case:
SQL> select * from v$version ;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 10.2.0.1
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
SQL> show parameter pga
NAME TYPE VALUE
pga_aggregate_target big integer 103M
SQL> create table t nologging as select * from all_objects where 1 = 2 ;
Table created.
SQL> create index t_idx on t(last_ddl_time) nologging ;
Index created.
SQL> insert /*+ APPEND */ into t (owner, object_name, object_id, created, last_ddl_time) select owner, object_name, object_id, created, sysdate - dbms_random.value(1, 100) from all_objects order by dbms_random.random;
40617 rows created.
SQL> commit ;
Commit complete.
SQL> exec dbms_stats.gather_table_stats(user, 'T', cascade=>true);
PL/SQL procedure successfully completed.
SQL> select object_id, object_name, created from t, (select rid, rownum rn from (select rowid rid from t order by created desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
OBJECT_ID OBJECT_NAME CREATED
47686 ALL$OLAP2_JOIN_KEY_COLUMN_USES 28-JUL-2009 08:08:39
47672 ALL$OLAP2_CUBE_DIM_USES 28-JUL-2009 08:08:39
47681 ALL$OLAP2_CUBE_MEASURE_MAPS 28-JUL-2009 08:08:39
47682 ALL$OLAP2_FACT_LEVEL_USES 28-JUL-2009 08:08:39
47685 ALL$OLAP2_AGGREGATION_USES 28-JUL-2009 08:08:39
47692 ALL$OLAP2_CATALOGS 28-JUL-2009 08:08:39
47665 ALL$OLAPMR_FACTTBLKEYMAPS 28-JUL-2009 08:08:39
47688 ALL$OLAP2_DIM_LEVEL_ATTR_MAPS 28-JUL-2009 08:08:39
47689 ALL$OLAP2_DIM_LEVELS_KEYMAPS 28-JUL-2009 08:08:39
47669 ALL$OLAP9I2_HIER_DIMENSIONS 28-JUL-2009 08:08:39
47666 ALL$OLAP9I1_HIER_DIMENSIONS 28-JUL-2009 08:08:39
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid order by last_ddl_time desc ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> set autotrace traceonly
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid order by last_ddl_time desc
2 ;
11 rows selected.
Execution Plan
Plan hash value: 44968669
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 91200 | 180 (2)| 00:00:03 |
| 1 | SORT ORDER BY | | 1200 | 91200 | 180 (2)| 00:00:03 |
|* 2 | HASH JOIN | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 3 | VIEW | | 1200 | 30000 | 98 (0)| 00:00:02 |
|* 4 | COUNT STOPKEY | | | | | |
| 5 | VIEW | | 40617 | 475K| 98 (0)| 00:00:02 |
| 6 | INDEX FULL SCAN DESCENDING| T_IDX | 40617 | 793K| 98 (0)| 00:00:02 |
| 7 | TABLE ACCESS FULL | T | 40617 | 2022K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("T".ROWID="T1"."RID")
3 - filter("RN">=1190)
4 - filter(ROWNUM<=1200)
Statistics
1 recursive calls
0 db block gets
348 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 ;
11 rows selected.
Execution Plan
Plan hash value: 882605040
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 1 | VIEW | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 40617 | 1546K| 80 (2)| 00:00:01 |
|* 4 | SORT ORDER BY STOPKEY| | 40617 | 2062K| 80 (2)| 00:00:01 |
| 5 | TABLE ACCESS FULL | T | 40617 | 2062K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("RN">=1190)
2 - filter(ROWNUM<=1200)
4 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
343 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
11 rows selected.
Execution Plan
Plan hash value: 168880862
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 1 | HASH JOIN | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 2 | VIEW | | 1200 | 30000 | 98 (0)| 00:00:02 |
|* 3 | COUNT STOPKEY | | | | | |
| 4 | VIEW | | 40617 | 475K| 98 (0)| 00:00:02 |
| 5 | INDEX FULL SCAN DESCENDING| T_IDX | 40617 | 793K| 98 (0)| 00:00:02 |
| 6 | TABLE ACCESS FULL | T | 40617 | 2022K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - access("T".ROWID="T1"."RID")
2 - filter("RN">=1190)
3 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
349 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 order by last_ddl_time desc ;
11 rows selected.
Execution Plan
Plan hash value: 882605040
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 1 | VIEW | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 40617 | 1546K| 80 (2)| 00:00:01 |
|* 4 | SORT ORDER BY STOPKEY| | 40617 | 2062K| 80 (2)| 00:00:01 |
| 5 | TABLE ACCESS FULL | T | 40617 | 2062K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("RN">=1190)
2 - filter(ROWNUM<=1200)
4 - filter(ROWNUM<=1200)
Statistics
175 recursive calls
0 db block gets
388 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> set autotrace off
SQL> spool offAs you will see, the join query here has to have an ORDER BY clause at the end to ensure that records are correctly sorted. You can not rely on optimizer choosing NESTED LOOP join method and, as above example shows, when optimizer chooses HASH JOIN, oracle is free to return rows in no particular order.
The query that does not involve join always returns rows in the desired order. Adding an ORDER BY does add a step in the plan for the query using join but does not affect the other query.
Maybe you are looking for
-
I have a MacBook Air 2011, running Lion 10.7.2, and Safari won't load any pages. Firefox loads everything just fine. What's going on?
-
Invoice transport costs with multiple account assignment
Hello Gurus, My problem is the following: 1) I create two sales orders with the same forwarding agent "A" 2) I create the two deliveries with the forwarding agent "A" 3) I create a transport for those two deliveries and the same forwarding agent A 4)
-
SAPu2019s content server (DMS) and EDMS with ECC 5.0
Hi all, I am in the process of setting up SAPu2019s content server (DMS) and would really appreciate some insights as what version I should be installing. We are currently running ECC 5.0 (640). I am also interested in utilizing the Easy DMS function
-
ABAP Programming or JAVA programming, in SAP - Which has got the edge?
Hi, I've been intrigued by the use of JAVA in SAP. Though I'm a novice and have been working only on ABAP, I would like to know which is better. Will JAVA overtake ABAP in future(in its use within SAP ofcourse! )? I would like to know the pros and c
-
HRTRV_IF_MODIFY_TRIP - Expense Posting Error
Hello, I am trying to save a trip using BAPI HRTRV_IF_MODIFY_TRIP. It works fine for all expense types but when i put PRBZ, it gives following error Field PTK03-PAYCURR. not found in loop of screen SAPMP56T 1300 Although I can save PRBZ entry using P