How to Check Query
Hi all,
How can you tell if a sql query is poorly written or not ( optimized or not)?
Is it by using Explain Plan ? There should be no full table scan it the report? and cost less than < what number?
Thanks a lot
I will just in continue to Sybrand i.e. if you get the output of below query :
SELECT * FROM
(SELECT
sql_fulltext,
sql_id,
child_number,
disk_reads,
executions,
first_load_time,
last_load_time
FROM v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
This finds the top SQL statements that are currently stored in the SQL cache, you can take them "Poor SQLs".
You could find disk intensive full table scans with something like this:
SELECT Disk_Reads DiskReads, Executions, SQL_ID, SQL_Text SQLText,
SQL_FullText SQLFullText
FROM
SELECT Disk_Reads, Executions, SQL_ID, LTRIM(SQL_Text) SQL_Text,
SQL_FullText, Operation, Options,
Row_Number() OVER
(Partition By sql_text ORDER BY Disk_Reads * Executions DESC)
KeepHighSQL
FROM
SELECT Avg(Disk_Reads) OVER (Partition By sql_text) Disk_Reads,
Max(Executions) OVER (Partition By sql_text) Executions,
t.SQL_ID, sql_text, sql_fulltext, p.operation,p.options
FROM v$sql t, v$sql_plan p
WHERE t.hash_value=p.hash_value AND p.operation='TABLE ACCESS'
AND p.options='FULL' AND p.object_owner NOT IN ('SYS','SYSTEM')
AND t.Executions > 1
ORDER BY DISK_READS * EXECUTIONS DESC
WHERE KeepHighSQL = 1
AND rownum <=5;
Source:http://stackoverflow.com/questions/316812/top-5-time-consuming-sql-queries-in-oracle
Regards
Girish Sharma
Similar Messages
-
How to check query is getting reused after changing parametr cursor_sharing
Hello,
Oracle Version: 11g
OS Version: Windows 2003 64Bit
How to find if a particular query is getting reused after change in a cursor_sharing parameter from EXACT to SIMILAR.
Which set of Views/DD's should i query go get the relevant details.
Thanks in advance.
-Vijay.SQL> desc v$sqlarea
Name Null? Type
SQL_TEXT VARCHAR2(1000)
SQL_FULLTEXT CLOB
SQL_ID VARCHAR2(13)
SHARABLE_MEM NUMBER
PERSISTENT_MEM NUMBER
RUNTIME_MEM NUMBER
SORTS NUMBER
VERSION_COUNT NUMBER
LOADED_VERSIONS NUMBER
OPEN_VERSIONS NUMBER
USERS_OPENING NUMBER
FETCHES NUMBER
EXECUTIONS NUMBER
PX_SERVERS_EXECUTIONS NUMBER
END_OF_FETCH_COUNT NUMBER
USERS_EXECUTING NUMBER
LOADS NUMBER
FIRST_LOAD_TIME VARCHAR2(19)
INVALIDATIONS NUMBER
PARSE_CALLS NUMBER
DISK_READS NUMBER
DIRECT_WRITES NUMBER
BUFFER_GETS NUMBER
APPLICATION_WAIT_TIME NUMBER
CONCURRENCY_WAIT_TIME NUMBER
CLUSTER_WAIT_TIME NUMBER
USER_IO_WAIT_TIME NUMBER
PLSQL_EXEC_TIME NUMBER
JAVA_EXEC_TIME NUMBER
ROWS_PROCESSED NUMBER
COMMAND_TYPE NUMBER
OPTIMIZER_MODE VARCHAR2(10)
OPTIMIZER_COST NUMBER
OPTIMIZER_ENV RAW(797)
OPTIMIZER_ENV_HASH_VALUE NUMBER
PARSING_USER_ID NUMBER
PARSING_SCHEMA_ID NUMBER
PARSING_SCHEMA_NAME VARCHAR2(30)
KEPT_VERSIONS NUMBER
ADDRESS RAW(4)
HASH_VALUE NUMBER
OLD_HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
MODULE VARCHAR2(64)
MODULE_HASH NUMBER
ACTION VARCHAR2(64)
ACTION_HASH NUMBER
SERIALIZABLE_ABORTS NUMBER
OUTLINE_CATEGORY VARCHAR2(64)
CPU_TIME NUMBER
ELAPSED_TIME NUMBER
OUTLINE_SID VARCHAR2(40)
LAST_ACTIVE_CHILD_ADDRESS RAW(4)
REMOTE VARCHAR2(1)
OBJECT_STATUS VARCHAR2(19)
LITERAL_HASH_VALUE NUMBER
LAST_LOAD_TIME DATE
IS_OBSOLETE VARCHAR2(1)
CHILD_LATCH NUMBER
SQL_PROFILE VARCHAR2(64)
PROGRAM_ID NUMBER
PROGRAM_LINE# NUMBER
EXACT_MATCHING_SIGNATURE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
LAST_ACTIVE_TIME DATE
BIND_DATA RAW(2000) -
How to check all items are not null in CAML Query?
HI All,
In a CAML Query, i got three items. In all three items, a particular column(Closure Date) should not be null. How to check in all three items, where 'Closure date' is not null?
Thanks in advance!Hi,
Try this:
"<Where><IsNull><FieldRef Name='Closure Date' /></IsNull></Where>"
Hope it hepls!
Thanks,
Avni Bhatt
If this helped you resolve your issue, please mark it Answered -
How to check multiple special characters in instr function sql query.
Hi,
The following special characters are comma(,), slash(/), colan(:)
these special characters i need to be check in instr function.
select SUBSTR(master_title,1,INSTR(master_title,',',1,1)-1) from dual;
Can you please write the query with right answer.
Thanks in advance,
Lakshman.Why multiple post?
How to check multiple special characters in this query. -
How I check in group by query the group change
How I check in group by query the group change
Hi master
Sir I have master detail table
This is my query
select rownum,chartofacc.accid,title,nvl(drbal,0),nvl(crbal,0),
(select case when nvl(sum(debit),0)-nvl(sum(credit),0)>0 then
nvl(sum(debit),0)-nvl(sum(credit),0)
else
0
end mfadrttt
from voudetail where voudetail.accid=chartofacc.accid) as mfadr,
(select case when nvl(sum(credit),0)-nvl(sum(debit),0)>0 then
nvl(sum(credit),0)-nvl(sum(debit),0)
else
0
end mfacrttt
from voudetail where voudetail.accid=chartofacc.accid) as mfacr
,nvl(debit,0),nvl(credit,0),voumaster.entdate,voumaster.vno from chartofacc ,accbal,voudetail,voumaster where chartofacc.accid=accbal.accid(+) and chartofacc.accid=voudetail.accid(+) and voumaster.vno=voudetail.vno order by chartofacc.accid,voumaster.entdate,voudetail.VNO;
Sir I need add opbal from master section to debit in detail section when new group start only after adding I use that column for accumulative total or running balance
If I get any method when group change system give me any key or indication then I use
Please give me idea in both field oracle sql and oracle report 6i
Thank
aamirHi,
Please send tables structures and sample data from that tables. And, of course what should be the output. :) Just sending your query won't help us to find a solution.
Peter D. -
We are interested to know how/where to check query runtimes for any Query in SAP BW?
We are interested to know how/where to check query runtimes for any Query in SAP BW?
Is there any table or program to get the query run time details per query for a particular day.Hello Sravan,
Bex statics tables would be 'RSDDSTATHEADER','RSDDSTATINFO' & 'RSDDSTATEVDATA'. all these can found in one view 'RSDDSTAT_OLAP'.
above can give historical statistic.
For current Query statics : T-code RSRT, and select debug mode select display statistics and then execute.
Once you get the output press F3(one step back), there you can see statics of the query for that particular execution.
Thanks,
Mallikarjuna -
How to check a value for paramter query
I am passing a paramter value from my text box to my sql statement and I would like to check if the value is entered into a text box. If you have any idea please share it with me, i have been struggling with this for many days.Code below is how i try to check if the value is entered but I do not know how to check the value in the :VendorName
thanks
If Not txtVendorName.Text = "" Then
Sql = Sql & " AND (Upper(V.VNAMEL) LIKE '%' || Trim(Upper(:VendorName))|| '%') "
End IfSorry guys english is not my first language and i will try to be clear and specific.
I have a search page where customeres can do searching either using a text box or two dropdowns i have on my page. they have the option of doing search either using a text box or dropdowns or both.Everything seems to work fine but if users does not leave the text box blank. but they leave the text box blank and do searching using the two dropdowns then the page comes up empty and i checked my query and i should get a value. Attacehed my code for you to look at it.
<pre>
Sub VendorSearch()
gvSearch.Visible = True
Dim MinPDate As String = drPur.SelectedItem.ToString
Dim MaxMDate As String = drPurM.SelectedItem.ToString
Dim liThisOne As ListItem
Dim strState As String = ""
For Each liThisOne In lstState.Items
If liThisOne.Selected Then
strState = strState & "'" & liThisOne.Value & "'" & ","
End If
Next
Dim Sql As String = " SELECT distinct V.VENDOR ""Vendor Id"",R.ADDRNUM,V.VNAMEL ""Vendor Name"",R.AADDR1,R.ACITY,R.VASST1, "
Sql = Sql & "R.ASTATE State,R.AZIPCODE, to_char(Max(P.DATEPUR),'YYYY/DD/MM') ""Plan Purchased Date"" , "
Sql = Sql & "TRIM (r.aaddr1 || decode(trim(r.aaddr2),null,'',' - ') || r.aaddr2) Address,"
Sql = Sql & " substr(decode(trim(r.vasst1),null, 'N/A','000/000-0000?','N/A','000/000-0000','N/A', r.vasst1),1,12) Fax, "
Sql = Sql & " substr(decode(trim(r.aphone),null, 'N/A','000/000-0000?','N/A', r.aphone),1,12)Phone "
Sql = Sql & "FROM VENDOR V,VENDADDR R, PLANHOLD P "
Sql = Sql & "WHERE V.VENDOR = R.VENDOR AND P.VENDOR = R.VENDOR "
Sql = Sql & " AND (P.DATEPUR >= TO_DATE('1999-01-01','YYYY-MM-DD')) "
Sql = Sql & "AND P.DATEPUR In ( select Max(P.DATEPUR) from PLANHOLD P where P.vendor = R.VENDOR) "
'If txtVendorName.Text <> "" Then
' Sql = Sql & " AND (Upper(V.VNAMEL) LIKE '%' || Trim(Upper(:VendorName))|| '%') "
'End If
If (strState.Length > 0 And lstState.SelectedIndex <> 0) Then
strState = Left(strState, strState.Length - 1)
strState = "(" & strState & ")"
Sql = Sql & "AND R.ASTATE IN " & strState
End If
If (drPur.SelectedIndex <> 0 And drPurM.SelectedIndex <> 0) Then
Sql = Sql & " AND to_number(to_char(p.datepur, 'YYYY')) between " & "'" & MinPDate & "'" & " AND " & "'" & MaxMDate & "'"
End If
' Dim Para As String
' SqlDataSource1.SelectParameters.
If Not txtVendorName.Text = "" Then
Sql = Sql & " AND (Upper(V.VNAMEL) LIKE '%' || Trim(Upper(:VendorName))|| '%') "
End If
'If Not IsDBNull(SqlDataSource1.SelectParameters(":VendorName")).val Then
' Sql = Sql & " AND (Upper(V.VNAMEL) LIKE '%' || Trim(Upper(:VendorName))|| '%') "
'End If
Sql = Sql & " AND V.VOBSOLET = 'N' "
Sql = Sql & "GROUP BY V.VENDOR, R.ADDRNUM,V.VNAMEL,R.AADDR1,R.AADDR2,R.ACITY,R.ASTATE, R.AZIPCODE, R.APHONE, R.VASST1, P.DATEPUR "
Sql = Sql & "ORDER BY V.VENDOR "
Response.Write("Sql " & "<br/>" & Sql & "<hr/>")
SqlDataSource1.SelectCommand = Sql
End Sub
</pre> -
How to check existing patches with a query
Hi,
I need to check the existing patches in oracle appls 11i with a sql query.
I assume I can reference the table ad_applied_patches . But, I am not sure if the column PATCH_NAME is actually the number : 5903765 in ATG Rollup Patchset 6 (11i.ATG_PF.H.delta.6, Patch 5903765) . if not, how can i check that.
Also, I couldn't find the proper TRM. so any help with that too would be appreciated.
Thank you..Hi,
You cannot query by name, but you can query AD_BUGS by the patch number -- See (Note: 390864.1 - How to check which Techstack patchsets have been applied on 11i or R12 ?) for details.
If you want to check the latest Family Packs applied, see this thread.
How to find Applied/Present Patches, Mini Packsand Family Packs in 11i
Re: How to find Applied/Present Patches, Mini Packsand Family Packs in 11i
Thanks,
Hussein -
How to check connection from SAP to reservation system?
Dear Experts,
May I know how to check whether the connection between SAP and the reservation system has been set up and ready to use?
Thanks.Hi
You need to check the identification code issued to the enterprise by AMADEUS must be entered in the R/3 Customizing for Travel Planning under Master Data u2192 Control Parameters for Travel Planning u2192 Define sales offices and Define API access parameters.
External reservation system In the Travel Planning subcomponent Travel Management accesses an external reservation system connected to R/3 to carry out the queries on available travel services and to book the selected services. The reservation system currently available is the AMADEUS Global Travel Distribution system.
For more information, see Technical Prerequisites for Travel Planning--
Technical Prerequisites for Travel Planning
Before you can use Travel Planning fully, a number of internal R/3 and external prerequisites or settings must be fulfilled.
Connection to an External Reservation System
The online booking function in Travel Planning is based on the cooperation with external reservation systems that are used to communicate with the service providers. The R/3 user has access to the following functions via the connection to an external reservation system:
u2022 Availability query of travel services
u2022 Transfer of additional information about selected travel services
u2022 Price information
u2022 Processing of reservation by the respective provider
u2022 Synchronization of the data in SAP Travel Planning if external booking changes have been made
In the current release the external reservation system in use is AMADEUS Global Travel Distribution. AMADEUS is a subsidiary of Lufthansa, Air France, Continental Airlines and Iberia. The reservation system it provides is in worldwide use and 160,000 terminals in 37,000 travel agencies and ticket sales centers in over 130 countries are connected to it.
In order to carry out online booking via AMADEUS the following must have been carried out:
u2022 Your enterprise must have signed an agreement with AMADEUS for the use of the interface and be registered at AMADEUS with a user ID
u2022 A network connection to the AMADEUS computer center must have been opened
u2022 The identification code issued to the enterprise by AMADEUS must be entered in the R/3 Customizing for Travel Planning under Master Data u2192 Control Parameters for Travel Planning u2192 Define sales offices and Define API access parameters.
For questions about registration, contact the SAP & AMADEUS Competence Center:
SAP & AMADEUS Competence Center ACC 02 Neurottstrasse 16 69185 Walldorf Germany
Cheers
Mukta -
Open Slaes Order-How to check and close ?
Hi,
We have an open sales order which looks like the delivery is closed and 100% completed, but the sales order is still open!
Now i know this is an ongoing issue which has several possible reasons for and i have used a script to see what is returned but nothing.
Can you let me know how to check if there were any changes made in any particular Sales orders ?
eg comparing open items list of sales orders with something ?
Thank you in advance,Hi,
Yes we ran the query in note 948670 and it came back zero for all?! See below for details.
This is what has thrown us so what is the simplest way to check why a SO remains open i.e how to check if there were any changes made?
Rdr u2013 0 Rows
Dln - 0 Rows
Rdn - 0 Rows
Por - 0 Rows
Pdn - 0 Rows
Rpd - 0 Rows -
CIN: How to check the material document posted without excise invoice
Hi Guru,
Please advise how to check the material document posted without excise invoice.
I have tried tcode J1I7 but it seems start to collect the excise invoice first and then material document.
But my case is to find the material document WITHOUT excise invoice for internal tracking purpose.
At the moment we start from tcode MB51 to get the list of material document and check in J_1IEXCHDR / J_1IEXCDTL
Best regards,
PakornHi,
Try creating a Query in Tcode SQVI by combining tables MKPF and J_1IEXCHDR/J_1IEXCDTL for your requirement.
Check these threads how to create Query.
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/6018c1ae-8c44-2d10-6ea9-c3fad2c82880?QuickLink=index&…
http://ptgmedia.pearsoncmg.com/images/9780672329029/samplechapter/0672329026_CH03.pdf
Regards
Binoy -
How to check the current EHP stack level? in SAP
Dear All,
How to check the current EHP stack level? in SAP . i have checked forum before i am posting but still comfused .
same one said SAP_APPL , EA_Appl and SAP _HR is 60n if n=1.2.3.4. if n =1 is enhanced package 1 similarly 2,3,4 .
some one said SAP_BASIS 701,702,703,704 . according ehp1,2,3,4.
Pls check the details and confirm either is ehp1 or ehp4 .
Component version is simply shows SAP ECC 6.0 in system -> status.
Software Component - Release - SP level
SAP_ABA 701 0007
SAP_BASIS 701 0007
PI_BASIS 701 0007
ST-PI 2008_1_700 0003
SAP_BS_FND 701 0008
SAP_BW 701 0007
SAP_AP 700 0021
WEBCUIF 700 0008
SAP_APPL 604 0008
SAP_HR 604 0029
SAP_HRCAR 604 0029
SAP_HRCAT 604 0029
SAP_HRCAU 604 0029
SAP_HRCBE 604 0029
SAP_HRCBR 604 0029
SAP_HRCCA 604 0029
SAP_HRCCH 604 0029
SAP_HRCCL 604 0029
SAP_HRCCN 604 0029
SAP_HRCDE 604 0029
SAP_HRCDK 604 0029
SAP_HRCES 604 0029
SAP_HRCFI 604 0029
SAP_HRCFR 604 0029
SAP_HRCGB 604 0031
SAP_HRCHK 604 0029
SAP_HRCID 604 0029
SAP_HRCIE 604 0029
SAP_HRCIN 604 0029
SAP_HRCIT 604 0029
SAP_HRCJP 604 0029
SAP_HRCKR 604 0029
SAP_HRCMX 604 0029
SAP_HRCMY 604 0029
SAP_HRCNL 604 0029
SAP_HRCNO 604 0029
SAP_HRCNZ 604 0029
SAP_HRCPH 604 0029
SAP_HRCPT 604 0029
SAP_HRCRU 604 0029
SAP_HRCSE 604 0029
SAP_HRCSG 604 0029
SAP_HRCTH 604 0029
SAP_HRCTW 604 0029
SAP_HRCUN 604 0029
SAP_HRCUS 604 0029
SAP_HRCVE 604 0029
SAP_HRCZA 604 0029
SAP_HRGXX 604 0029
SAP_HRRXX 604 0029
EA-IPPE 400 0018
EA-APPL 604 0008
EA-DFPS 600 0018
EA-FINSERV 604 0007
EA-GLTRADE 604 0008
EA-HR 604 0029
EA-HRCAR 604 0029
EA-HRCAT 604 0029
EA-HRCAU 604 0029
EA-HRCBE 604 0029
EA-HRCBR 604 0029
EA-HRCCA 604 0029
EA-HRCCH 604 0029
EA-HRCCN 604 0029
EA-HRCDE 604 0029
EA-HRCDK 604 0029
EA-HRCES 604 0029
EA-HRCFI 604 0029
EA-HRCFR 604 0029
EA-HRCGB 604 0029
EA-HRCHK 604 0029
EA-HRCID 604 0029
EA-HRCIE 604 0029
EA-HRCIN 604 0029
EA-HRCIT 604 0029
EA-HRCJP 604 0029
EA-HRCKR 604 0029
EA-HRCMX 604 0029
EA-HRCMY 604 0029
EA-HRCNL 604 0029
EA-HRCNO 604 0029
EA-HRCNZ 604 0029
EA-HRCPH 604 0029
EA-HRCPT 604 0029
EA-HRCRU 604 0029
EA-HRCSE 604 0029
EA-HRCSG 604 0029
EA-HRCTH 604 0029
EA-HRCTW 604 0029
EA-HRCUN 604 0029
EA-HRCUS 604 0029
EA-HRCVE 604 0029
EA-HRCZA 604 0029
EA-HRGXX 604 0029
EA-HRRXX 604 0029
EA-PS 604 0007
EA-RETAIL 604 0007
FINBASIS 604 0008
ECC-DIMP 600 0018
ERECRUIT 604 0008
FI-CA 604 0008
FI-CAX 604 0007
INSURANCE 600 0018
IS-CWM 600 0018
IS-H 600 0024
IS-M 600 0018
IS-OIL 600 0018
IS-PS-CA 604 0007
IS-UT 600 0018
LSOFE 600 0018
SEM-BW 604 0008
ST-A/PI 01M_ECC600 0001
Regards
Edited by: satheesh0812 on Nov 17, 2011 7:57 AMHi Sateesh,
SAP_ABA 701 0007
SAP_BASIS 701 0007
PI_BASIS 701 0007
ST-PI 2008_1_700 0003
SAP_BS_FND 701 0008
SAP_BW 701 0007
SAP_AP 700 0021
WEBCUIF 700 0008
SAP_APPL 604 0008
Based on the component information provided by you, I can conclude that your system is ECC 6.0 EHP4.
EHP4 is derived from your component SAP_APPL 604.
In addition to this your EHP4 system has NW stack on NW 7.0 EHP1.
Hence your system is ECC 6.0 EHP4 with NW 7.0 EHP1.
Hope this answers your query.
Regards,
Deepak Kori -
Need to find out how much % of query completed from OEM
Need to find out how long will a query take to run or when I am running the query where can I check to see that X% of my query is complete.
Is that % shown on OEM --> Performance --> Top Activitity?Under OEM/GC of release 10g you won't be able to see how long the query will take neither how much % of a query are already finished.
I know that this functionality was given in the old release of the OEM (javas based GUI with ll the databases on the left side). I'm missing
that old functionality, too... -
How to check the tables we have created in JDBC??
I have created a table called COFFEE2 in a datasource called temp which is in SQL server...How to check the table values??
i went into administrative tools and odbc cource then i could see the data source i have created but how to see the table??
Can anyone help??
thanxHmm.. not sure that I understand the problem.
Call getConnection on the DataSource, and then execute the select query on the connection.
Kaj -
How to check with table for cursor..?
How to check with table for cursor..?
Here I have Table temp_final_plan
Here i want to update if already exit...below is the procedure....
CREATE OR REPLACE PROCEDURE spu_final_profit_plan
AS
-- Constant declarations
ln_errnum number := 0;
-- Variable declarations
ls_errmsg app_errors.err_msg%TYPE;
ls_appmsg app_errors.app_msg%TYPE;
ls_appid app_errors.app_id%TYPE;
-- Cursor declaration for final_update_el
CURSOR cur_final_update_el IS
select '910' ent,
'9127316' center,
post_acct,
sum(avg_mtd_01) sum_avg_mtd_01,
sum(avg_mtd_02) sum_avg_mtd_02,
sum(avg_ytd_01) sum_avg_ytd_01,
sum(avg_ytd_02) sum_avg_ytd_02
from mon_act_cypy
where rec_type = 'A'
and sum_flag = 'D'
and yr = '2008'
and substr(ctr_or_hier, 1, 2) = 'el'
and ent || sub_ent in
(select ent || sub_ent
from ent_ref
where roll_ent || roll_sub_ent = '999100')
group by post_acct
having sum(avg_mtd_01) <> 0
or sum(avg_mtd_02) <> 0
or sum(avg_ytd_01) <> 0
or sum(avg_ytd_02) <> 0;
-- Cursor declaration for final_update
CURSOR cur_final_update IS
select b.plan_ent b_plan_ent,
b.plan_ctr b_plan_ctr,
a.post_acct a_post_acct,
sum(a.avg_mtd_01) sum_avg_mtd_01,
sum(a.avg_mtd_02) sum_avg_mtd_02,
sum(a.avg_ytd_01) sum_ytd_mtd_01,
sum(a.avg_ytd_02) sum_ytd_mtd_02
from mon_act_cypy a,
plan_unit_tbl b
where a.ent || a.ctr_or_hier = b.ent || b.ctr_or_hier
and a.rec_type = 'A'
and a.sum_flag = 'D'
and a.yr = '2008'
and b.hier_tbl_num = '001'
and a.ent || a.sub_ent in
(select ent || sub_ent
from ent_ref
where roll_ent || roll_sub_ent = '999100')
group by b.plan_ent, b.plan_ctr, a.post_acct
having sum(a.avg_mtd_01) <> 0
or sum(a.avg_mtd_02) <> 0
or sum(a.avg_ytd_01) <> 0
or sum(a.avg_ytd_02) <> 0;
-- Begin the procedure body
BEGIN
-- Insert / Update final profit plan for final_update query using cursor
FOR rec_final_update_el IN cur_final_update_el
LOOP
EXIT WHEN rec_final_update_el%NOTFOUND;
IF rec_final_update_el. THEN
UPDATE temp_final_plan
SET sum_avg_mtd_01 = rec_final_update_el.sum_avg_mtd_01,
sum_avg_mtd_02 = rec_final_update_el.sum_avg_mtd_02,
sum_avg_ytd_01 = rec_final_update_el.sum_avg_ytd_01,
sum_avg_ytd_02 = rec_final_update_el.sum_avg_ytd_02,
WHERE ent = rec_final_update_el.ent
AND center = rec_final_update_el.center
AND post_acct = rec_final_update_el.post_acct;
ELSE
INSERT INTO temp_final_plan VALUES(rec_final_update_el.ent,
rec_final_update_el.center,
rec_final_update_el.post_acct,
rec_final_update_el.sum_avg_mtd_01,
rec_final_update_el.sum_avg_mtd_02,
rec_final_update_el.sum_avg_ytd_01,
rec_final_update_el.sum_avg_ytd_02);
END IF;
END LOOP;
-- Insert / Update final profit plan for final_update query using cursor
FOR rec_final_update IN cur_final_update
LOOP
EXIT WHEN rec_final_update%NOTFOUND;
IF rec_final_update. THEN
UPDATE temp_final_plan
SET sum_avg_mtd_01 = rec_final_update.sum_avg_mtd_01,
sum_avg_mtd_02 = rec_final_update.sum_avg_mtd_02,
sum_avg_ytd_01 = rec_final_update.sum_avg_ytd_01,
sum_avg_ytd_02 = rec_final_update.sum_avg_ytd_02,
WHERE ent = rec_final_update.b_plan_ent
AND center = rec_final_update.b_plan_ctr
AND post_acct = rec_final_update.a_post_acct;
ELSE
INSERT INTO temp_final_plan VALUES(rec_final_update.b_plan_ent,
rec_final_update.b_plan_ctr,
rec_final_update.a_post_acct,
rec_final_update.sum_avg_mtd_01,
rec_final_update.sum_avg_mtd_02,
rec_final_update.sum_avg_ytd_01,
rec_final_update.sum_avg_ytd_02);
END IF;
END LOOP;
-- EXCEPTION handling section
EXCEPTION
-- Fire OTHERS Exception case by default
WHEN OTHERS THEN
-- ROLL BACK Transaction, if any failure
ROLLBACK;
ln_errnum := SQLCODE;
ls_errmsg := SUBSTR(SQLERRM, 1, 100);
-- Log the ERRORS into APP_ERRORS table using SPU_LOG_ERRORS procedure
spu_log_errors(ln_errnum, ls_errmsg, ls_appid, ls_appmsg);
-- End of the stored procedure
END spu_final_profit_plan;
[\pre]I'm not sure what you mean by, 'How to check with table for cursor..?' but I'll offer a comment on your Code Snippet. I think you want to know how to check if a record exists so you know if you need to perform an INSERT or an UPDATE.
Here is a snippet of your code. I'll put my comments in "Comment" style in your code.
-- Insert / Update final profit plan for final_update query using cursor
FOR rec_final_update_el IN cur_final_update_el
LOOP
/* There is no need to test for %NOTFOUND since you are using Cursor FOR Loop!
** This construct automatically exits when the last record is processed. */
EXIT WHEN rec_final_update_el%NOTFOUND;
/* Is this where you would like to know how to Check if the record already exist??
** I asked this because, 'rec_final_update_el.' is not valid syntax. Are you looking for
** an Cursor Attribute or Method you can check here?
** I would suggest a Primary Key or Unique Index on ENT, CENTER, and POST_ACCT
** on the TEMP_FINAL_PLAN table. Then simply perform an INSERT and code an
** Exception to UPDATE when you get a DUP_VAL_ON_INDEX exception. Otherwise,
** you will need to simply run an Implicit or Explicit Cursor to test if the row exists and
** use this return value to determine if you should INSERT or UPDATE. */
IF rec_final_update_el. THEN
UPDATE temp_final_plan
SET sum_avg_mtd_01 = rec_final_update_el.sum_avg_mtd_01,
sum_avg_mtd_02 = rec_final_update_el.sum_avg_mtd_02,
sum_avg_ytd_01 = rec_final_update_el.sum_avg_ytd_01,
sum_avg_ytd_02 = rec_final_update_el.sum_avg_ytd_02,
WHERE ent = rec_final_update_el.ent
AND center = rec_final_update_el.center
AND post_acct = rec_final_update_el.post_acct;
ELSE
INSERT INTO temp_final_plan VALUES(rec_final_update_el.ent,
rec_final_update_el.center,
rec_final_update_el.post_acct,
rec_final_update_el.sum_avg_mtd_01,
rec_final_update_el.sum_avg_mtd_02,
rec_final_update_el.sum_avg_ytd_01,
rec_final_update_el.sum_avg_ytd_02);
END IF;
END LOOP;I hope I've answered your question, but if I haven't please provide more details so we can better understand your request.
Craig...
Maybe you are looking for
-
My early 2011 MacBook Pro 15 inch is currently online, with good (albeit slow... although that is due to the service provider) internet connectivity via wifi. The icon shows that I am connected to my network with full bars. I use an Airport Time Ca
-
Cell phone pay as you go - need advice
Yikes... my head is spinning...I have seen so many phones the past few days ( and reviews etc ) on internet sites... I am totally lost. had a cell phone years ago when motorola made them first.. traxar or something ?? was expensive ( $800 ? ).. and h
-
Acrobat 9 Pro and MS Outlook 2007
After installing 9 Pro Extended, the following occured. I prevent downloading emails > 100 kB, instead from those emails only the headers are shown. I then decide on whether I want to download the attachements. This works great, and worked fine with
-
Why I cannot open my Adobe Acrobat X Pro?
Why I cannot open my Adobe Acrobat X Pro?
-
Hi Everybody, I have a question about event handling and I am just wondering if I can do the following with JSF. I have two HTML dropdown lists A and B. When ever a value changes in list A, based on the selected value, list B has to be populated. Is