Opening Ref Cursor in Forms 10
Hi,
I have a procedure test which returns refcursor as out parameter. How can I open and process this refcursor in forms to poulate a non base table block ?
Regards,
Rajesh
Hello
In your forms builder Online help search for 'Creating a Data Block from a Procedure that Uses a Ref Cursor'. It provides a pretty good example.
cheers
Q
Similar Messages
-
REF Cursor in Forms 4.5
I am using forms 4.5. I have a function whcih returns cursor. I would like to store the return values in Forms cursor variable and iterate thru the result set. When I declare TYPE cname IS REF CUROSOR I get compilation error. Is it possible to declare REF CURSOR in forms 4.5 . Help is greatly appreciated
Thanks. Is there any way I can capture the ref curosr (or resultset) passed from server from the oracle forms. The purpose is to call the function from the forms with a table id which will return a resultset which is the items in the list , which is used to populate list in forms. To have a centralised location for list elements.
Is there any package on forms which can be used to capture the returned resultset, pl. let me know -
Hi,
I have a question on reference cursor. In case of having the data from a database table , can the ref cursor be open for a pl/sql table or a pl/sql object . The scenario is something like this . I have a report which needs some calculations and analysis , for each column . To have this, the data must be processed and put in a temp table . As Oracle report can be based on reference cursor instead of database table I dont want to use temp tables ( also against my company policy). So if the recursor can be based on a pl/sql table or a plsql object then i can have all the precess in a package , put the processed data on the pl/sql table or object and have the reference cursor get the data from there . Build the report on the reference cursor. Is it possible ? I tried a statement like this
OPEN v_cursor FOR SELECT * FROM v_tab;
Here V_Tab is a PL?SQL table. And it gave me an error message that "identifier v_tab must be decalred", because its treating v_tab as a database table. What to do ?
Thanks
FerozHello
In your forms builder Online help search for 'Creating a Data Block from a Procedure that Uses a Ref Cursor'. It provides a pretty good example.
cheers
Q -
Open ref cursor in a procedure
Hi
I have a procedure which has 3 input parameters and 1 REF CURSOR type OUT parameter.
In the body of the procedure a select query is dynamically being created, and just before the end of the procedure the REF CURSOR is opened for SELECT(dynamic) query
For Ex: Create or replace procedure proc_name(a in number,b in number,c in number,RETVAL OUT REF CURSOR) as
decalre
strQry varchar2(3000);
begin
-- strQry is select query built dynamically
OPEN RETVAL for strQry;
end proc_name;
This procedure is being called by a java application. My question is what the open cursor statement is doing in the procedure?
Any ideas? Thanks!
greddyHi,
As i know, for example if we want to generate a report for some particular records in our project.consider we are using java as front end and oracle as backend. ok. In that case we need to bring the data from backend to front end ,for that in backend (oracle) we can write procedure to perform this task using ref cursors.
Note: ref cursor will provide the most efficient way in bringing the records from back end to front end.
Create or replace procedure proc_name(a in number,b in number,c in number,RETVAL OUT REF CURSOR) as
decalre
strQry varchar2(3000);
begin
-- strQry is select query built dynamically
--if we are using dynamic query, we can filter out the records using id or name or date
once we did, we need to pass the values to calling enviroment, since we declared the ref cursor as out parameter, we can use the ref cursor to pass the values to calling enviroment. Since we are using ref cursor we need to open the cursor for that dynamic query.
OPEN RETVAL for strQry;
end proc_name;
hope this information is some what helpful. if you got any details regarding this please post it..
thanks. -
Dynamic sql and ref cursors URGENT!!
Hi,
I'm using a long to build a dynamic sql statement. This is limited by about 32k. This is too short for my statement.
The query results in a ref cursor.
Does anyone have an idea to create larger statement or to couple ref cursors, so I can execute the statement a couple of times and as an result I still have one ref cursor.
Example:
/* Determine if project is main project, then select all subprojects */
for i in isMainProject loop
if i.belongstoprojectno is null then
for i in ProjectSubNumbers loop
if ProjectSubNumbers%rowcount=1 then
SqlStatement := InitialStatement || i.projectno;
else
SqlStatement := SqlStatement || PartialStatement || i.projectno;
end if;
end loop;
else
for i in ProjectNumber loop
if ProjectNumber%rowcount=1 then
SqlStatement := InitialStatement || i.projectno;
else
SqlStatement := SqlStatement || PartialStatement || i.projectno;
end if;
end loop;
end if;
end loop;
/* Open ref cursor */
open sql_output for SqlStatement;
Thanks in advance,
Jeroen Muis
KCI Datasystems BV
mailto:[email protected]Example for 'dynamic' ref cursor - dynamic WHERE
(note that Reports need 'static' ref cursor type
for building Report Layout):
1. Stored package
CREATE OR REPLACE PACKAGE report_dynamic IS
TYPE type_ref_cur_sta IS REF CURSOR RETURN dept%ROWTYPE; -- for Report Layout only
TYPE type_ref_cur_dyn IS REF CURSOR;
FUNCTION func_dyn (p_where VARCHAR2) RETURN type_ref_cur_dyn;
END;
CREATE OR REPLACE PACKAGE BODY report_dynamic IS
FUNCTION func_dyn (p_where VARCHAR2) RETURN type_ref_cur_dyn IS
ref_cur_dyn type_ref_cur_dyn;
BEGIN
OPEN ref_cur_dyn FOR
'SELECT * FROM dept WHERE ' | | NVL (p_where, '1 = 1');
RETURN ref_cur_dyn;
END;
END;
2. Query PL/SQL in Reports
function QR_1RefCurQuery return report_dynamic.type_ref_cur_sta is
begin
return report_dynamic.func_dyn (:p_where);
end;
Regards
Zlatko Sirotic
null -
Ref Cursor - How to append records into ref cursor?
Hi,
Is it possible to append ref cursor?
Iam having a procedure which accepts 1 string as input
parameter. That string will have list of ID delimited by comma.
I want to extract & match every ID with some tables.
My problem is for first ID i would get 10 records
and for 2nd ID i 'l get other 20 records. But while returning
i need to send the same(10 + 20 records) as ref cursor(OUT parameter).
But in below given code i could send only last 20 records. first
10 records are not append/updated into ref cursor.
How to append 2nd 20 records with 1st 10 records? so that i can
send all the 30 records.
Here goes my code...
CREATE OR REPLACE PROCEDURE getCRMGroupsAndRollups_PRC
in_groupId IN VARCHAR2,
out_getCRMGroups OUT TYPES.DATASET
IS
v_temp VARCHAR2(500) := in_groupId ||',';
v_temp_split VARCHAR2(500);
v_pos1 NUMBER := 0;
v_pos2 NUMBER := 1;
v_pos3 NUMBER := 0;
v_extract_char VARCHAR(1) := NULL;
v_comma_cnt NUMBER := 0;
BEGIN
-- check in for null input parameters
IF ( in_groupId IS NOT NULL ) THEN
-- loop to count no of in_groupId
FOR j IN 1..LENGTH(v_temp)
LOOP
v_extract_char := SUBSTR(v_temp,j,1);
IF (v_extract_char = ',') THEN
v_comma_cnt := v_comma_cnt + 1;
END IF;
END LOOP;
-- loop to extract in_group Id
FOR i IN 1..v_comma_cnt
LOOP
v_pos1 := instr(v_temp,',',(v_pos1 + 1));
v_pos3 := ((v_pos1-1) - v_pos2 )+ 1;
v_temp_split := SUBSTR(v_temp,v_pos2,v_pos3);
v_pos2 := v_pos1 + 1;
-- query to return dataset filled BY list of all the current
-- CRM groups and the associated rollup groups
OPEN out_getCRMGroups FOR
SELECT
DISTINCT
gcs.crm_st_id_cd,
gcs.lgcy_roll_up_grp_num,
gcs.lgcy_roll_up_grp_name,
gcs.grp_xwalk_complt_dt,
gcs.crm_grp_num,
gcs.facets_gnat_id,
gcs.crm_grp_name
FROM
grp_convsn_stat gcs
--lgcy_xref_elem lxe
WHERE
( gcs.mbrshp_convsn_aprvl_dt = NULL )
OR ( gcs.mbrshp_convsn_aprvl_dt < (SYSDATE - 7 ) )
AND ( gcs.facets_grp_stat_actv_ind = 'Y' )
AND ( gcs.lgcy_roll_up_grp_num = v_temp_split );
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');
END getCRMGroupsAndRollups_PRC;
in this v_temp_split will have extracted id & iam opening
ref cursor for each & every ID extracted from list.
2) How to handle no_data_found exception for this ref cursor?
Please help me....
-thiyagarajan.http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:110612348061
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:210612357425
Message was edited by:
Kamal Kishore -
Ref cursor is slower than issuing the same query directly
We are building SQL dynamically in PL/SQL procedure. SQL is complex enough (pivoting, UNIONS, spatial operations, complex underlying view joining many tables). Then we are opening ref cursor output parameter using the following syntax:
OPEN p_cursor FOR v_sql using p_param1, p_param2;
Then client code iterates through the rows of the cursor. It takes about a minute. If we run the SQL stored in v_sql variable directly in SQL Plus (replacing bind variables with values of course), we get 4 seconds response time.
QUESTION: what makes ref cursor being so slow comparing with direct execution of the same query?OK, here are the traces. Execution plans look different. I have called SP (which opens ref cursor) first, then applied tkprof on trace file, copied SQL from that file into SQL Plus (before that I have defined bind variables in SQL Plus) and executed it, so I'm 100% sure that in SQL Plus I'm running exactly the same query SP issues for ref cursor.
1. PL/SQL - ref cursor:
TKPROF: Release 10.2.0.1.0 - Production on Wed May 16 10:59:30 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: D:\oracle\product\10.2.0\admin\dae\udump\dae_ora_17004_refcursor.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 569 0.12 0.09 0 1707 0 569
Fetch 0 0.00 0.00 0 0 0 0
total 571 0.12 0.09 0 1707 0 569
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75
declare
TYPE OutRefCursor IS REF CURSOR;
TYPE RightClickRec IS RECORD(category_ varchar2(50), subcategory varchar2(50), param_name varchar2(50), param_value varchar2(50));
rc OutRefCursor;
rec RightClickRec;
errno number;
errmsg varchar2(200);
begin
cust_pck_layer.get_right_click_channel_info('7WAN097B_B','TCH',rc, errno, errmsg);
loop
fetch rc into rec;
exit when rc%notfound;
dbms_output.put_line(rec.category_ || ' ' || rec.subcategory || ' ' || rec.param_name || ' ' || rec.param_value);
end loop;
end;
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.15 0.15 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.15 0.15 0 0 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75
select Category, Sub_Category, Param_Name, Param_Value
from
( ( select distinct 0 as order_c,'TCH Analysis' as Category, NULL as
Sub_Category,0 as Param_Id, 'Analyzed Sector' as Param_Name, :p_sectorid_1
as Param_Value, 0 as SORTORDER, 0 as DISTANCE from dual)
UNION select
order_c,Category,Sub_Category,Param_Id,Param_Name,stragg(Param_Value) as
Param_Value,1 as SORTORDER, 0 as DISTANCE from ( select distinct 1 as
order_c,'TCH Analysis' as Category, NULL as Sub_Category,0 as Param_Id,
'TCH' as Param_Name, to_char(CHANNEL) as Param_Value, 1 as SORTORDER, 0 as
DISTANCE from sector_freq_params where SECTOR_ID=:p_SectorId_2 and
CHAN_TYPE_ID = 2) group by order_c,Category,Sub_Category,Param_Id,
Param_Name,SORTORDER
UNION (select r.rr + 1 order_c, 'TCH Analysis' as
Category, to_char(Sub_Category) as Sub_Category,
decode(r.rr, 1, 1, 2, 3, 3,
3, 4, 4, 5, 4) Param_Id,
decode(r.rr, 1, 'Sector Name', 2, 'Channel
Number', 3, 'BSIC', 4, 'Relationship', 5, 'Distance to Sector (mi)')
Param_Name,
decode(r.rr, 1, SECTOR_ID, 2, Channel_Number, 3, BSIC, 4,
Relationship, 5, Distance) Param_Value, SORTORDER, DISTANCE from
(select
rownum Sub_Category, SECTOR_ID, SORTORDER, Channel_Number, BSIC,
Relationship, DISTANCE
from dae_admin.TCH_ANALYSIS_VIEW where
SELECTED_SECTOR_ID = :p_sectorid_3 and
SDO_WITHIN_DISTANCE(GEOLOC,
SELECTED_GEOLOC, 'unit=MILE,distance=25')='TRUE') qry,
(select 1 rr from
dual union select 2 from dual union select 3 from dual union select 4 from
dual union select 5 from dual) r)) order by SORTORDER, DISTANCE, order_c
asc
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 8513 31.56 33.05 0 1006398 0 8512
total 8515 31.56 33.05 0 1006398 0 8512
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75 (recursive depth: 1)
Rows Row Source Operation
8512 SORT ORDER BY (cr=1972854 pr=0 pw=0 time=62811214 us)
8512 VIEW (cr=1972854 pr=0 pw=0 time=62806007 us)
8512 SORT UNIQUE (cr=1972854 pr=0 pw=0 time=62797492 us)
8512 UNION-ALL (cr=1972854 pr=0 pw=0 time=2119247 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=1 us)
1 SORT GROUP BY (cr=2457 pr=0 pw=0 time=16606 us)
3 VIEW (cr=2457 pr=0 pw=0 time=16040 us)
3 HASH UNIQUE (cr=2457 pr=0 pw=0 time=16036 us)
3 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3999 us)
3 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3996 us)
8510 MERGE JOIN CARTESIAN (cr=1970397 pr=0 pw=0 time=62768739 us)
5 VIEW (cr=0 pr=0 pw=0 time=54 us)
5 SORT UNIQUE (cr=0 pr=0 pw=0 time=49 us)
5 UNION-ALL (cr=0 pr=0 pw=0 time=21 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=2 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=0 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=2 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=1 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=2 us)
8510 BUFFER SORT (cr=1970397 pr=0 pw=0 time=62760191 us)
1702 VIEW (cr=1970397 pr=0 pw=0 time=20797110 us)
1702 COUNT (cr=1970397 pr=0 pw=0 time=20793704 us)
1702 VIEW TCH_ANALYSIS_VIEW (cr=1970397 pr=0 pw=0 time=20792001 us)
15588 HASH JOIN (cr=10465 pr=0 pw=0 time=2560803 us)
15609 MERGE JOIN (cr=4918 pr=0 pw=0 time=1430639 us)
478112 MERGE JOIN CARTESIAN (cr=2461 pr=0 pw=0 time=659598 us)
1 PARTITION RANGE ALL PARTITION: 1 2 (cr=4 pr=0 pw=0 time=79 us)
1 TABLE ACCESS BY LOCAL INDEX ROWID SECTORS PARTITION: 1 2 (cr=4 pr=0 pw=0 time=68 us)
1 INDEX RANGE SCAN SECTORS_SECTORID_IND PARTITION: 1 2 (cr=3 pr=0 pw=0 time=25 us)(object id 1834180)
478112 BUFFER SORT (cr=2457 pr=0 pw=0 time=181427 us)
478112 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=478158 us)
478112 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=45 us)
15609 FILTER (cr=2457 pr=0 pw=0 time=1859879 us)
1434336 SORT JOIN (cr=2457 pr=0 pw=0 time=513880 us)
3 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3966 us)
3 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3958 us)
115509 PARTITION RANGE ALL PARTITION: 1 2 (cr=5547 pr=0 pw=0 time=115594 us)
115509 TABLE ACCESS FULL SECTORS PARTITION: 1 2 (cr=5547 pr=0 pw=0 time=115586 us)
select count(*)
from
mdsys.geodetic_srids where srid = 99900001
call count cpu elapsed disk query current rows
Parse 62352 0.53 0.47 0 0 0 0
Execute 62353 0.78 0.76 0 0 0 0
Fetch 62352 0.65 0.65 0 187056 0 62352
total 187057 1.96 1.90 0 187056 0 62352
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 2)
Rows Row Source Operation
1 SORT AGGREGATE (cr=3 pr=0 pw=0 time=39 us)
0 TABLE ACCESS BY INDEX ROWID SDO_CS_SRS (cr=3 pr=0 pw=0 time=24 us)
1 INDEX UNIQUE SCAN SYS_C003941 (cr=2 pr=0 pw=0 time=14 us)(object id 48833)
select wktext, srid
from
mdsys.cs_srs where srid = 99900001
call count cpu elapsed disk query current rows
Parse 31176 0.20 0.20 0 0 0 0
Execute 31176 0.18 0.26 0 0 0 0
Fetch 31176 0.20 0.23 0 93528 0 31176
total 93528 0.59 0.71 0 93528 0 31176
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 2)
Rows Row Source Operation
1 TABLE ACCESS BY INDEX ROWID SDO_CS_SRS (cr=3 pr=0 pw=0 time=9 us)
1 INDEX UNIQUE SCAN SYS_C003941 (cr=2 pr=0 pw=0 time=6 us)(object id 48833)
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 3 0.00 0.00 0 0 0 0
Execute 570 0.28 0.25 0 1707 0 570
Fetch 0 0.00 0.00 0 0 0 0
total 573 0.28 0.25 0 1707 0 570
Misses in library cache during parse: 0
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 93529 0.73 0.68 0 0 0 0
Execute 93530 0.96 1.03 0 0 0 0
Fetch 102041 32.42 33.94 0 1286982 0 102040
total 289100 34.12 35.66 0 1286982 0 102040
Misses in library cache during parse: 0
93532 user SQL statements in session.
0 internal SQL statements in session.
93532 SQL statements in session.
Trace file: D:\oracle\product\10.2.0\admin\dae\udump\dae_ora_17004_refcursor.trc
Trace file compatibility: 10.01.00
Sort options: default
0 session in tracefile.
93532 user SQL statements in trace file.
0 internal SQL statements in trace file.
93532 SQL statements in trace file.
5 unique SQL statements in trace file.
944521 lines in trace file.
90 elapsed seconds in trace file.
2. Direct SQL execution:
TKPROF: Release 10.2.0.1.0 - Production on Wed May 16 11:03:53 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: D:\oracle\product\10.2.0\admin\dae\udump\dae_ora_17004_sql2.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 6 0 2
Fetch 0 0.00 0.00 0 0 0 0
total 4 0.00 0.00 0 6 0 2
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75
select Category, Sub_Category, Param_Name, Param_Value
from
( ( select distinct 0 as order_c,'TCH Analysis' as Category, NULL as
Sub_Category,0 as Param_Id, 'Analyzed Sector' as Param_Name, :p_sectorid_1
as Param_Value, 0 as SORTORDER, 0 as DISTANCE from dual)
UNION select
order_c,Category,Sub_Category,Param_Id,Param_Name,stragg(Param_Value) as
Param_Value,1 as SORTORDER, 0 as DISTANCE from ( select distinct 1 as
order_c,'TCH Analysis' as Category, NULL as Sub_Category,0 as Param_Id,
'TCH' as Param_Name, to_char(CHANNEL) as Param_Value, 1 as SORTORDER, 0 as
DISTANCE from sector_freq_params where SECTOR_ID=:p_SectorId_2 and
CHAN_TYPE_ID = 2) group by order_c,Category,Sub_Category,Param_Id,
Param_Name,SORTORDER
UNION (select r.rr + 1 order_c, 'TCH Analysis' as
Category, to_char(Sub_Category) as Sub_Category,
decode(r.rr, 1, 1, 2, 3, 3,
3, 4, 4, 5, 4) Param_Id,
decode(r.rr, 1, 'Sector Name', 2, 'Channel
Number', 3, 'BSIC', 4, 'Relationship', 5, 'Distance to Sector (mi)')
Param_Name,
decode(r.rr, 1, SECTOR_ID, 2, Channel_Number, 3, BSIC, 4,
Relationship, 5, Distance) Param_Value, SORTORDER, DISTANCE from
(select
rownum Sub_Category, SECTOR_ID, SORTORDER, Channel_Number, BSIC,
Relationship, DISTANCE
from dae_admin.TCH_ANALYSIS_VIEW where
SELECTED_SECTOR_ID = :p_sectorid_3 and
SDO_WITHIN_DISTANCE(GEOLOC,
SELECTED_GEOLOC, 'unit=MILE,distance=25')='TRUE') qry,
(select 1 rr from
dual union select 2 from dual union select 3 from dual union select 4 from
dual union select 5 from dual) r)) order by SORTORDER, DISTANCE, order_c
asc
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.04 0.03 0 1167 0 0
Fetch 569 1.20 1.25 0 71026 2 8512
total 571 1.25 1.29 0 72193 2 8512
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 75
Rows Row Source Operation
8512 SORT ORDER BY (cr=86691 pr=0 pw=0 time=1372298 us)
8512 VIEW (cr=86691 pr=0 pw=0 time=1367047 us)
8512 SORT UNIQUE (cr=86691 pr=0 pw=0 time=1358534 us)
8512 UNION-ALL (cr=86691 pr=0 pw=0 time=3191633 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=2 us)
1 SORT GROUP BY (cr=2457 pr=0 pw=0 time=16109 us)
3 VIEW (cr=2457 pr=0 pw=0 time=15657 us)
3 HASH UNIQUE (cr=2457 pr=0 pw=0 time=15651 us)
3 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3875 us)
3 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3869 us)
8510 MERGE JOIN CARTESIAN (cr=84234 pr=0 pw=0 time=1166420 us)
1702 VIEW (cr=84234 pr=0 pw=0 time=1181142 us)
1702 COUNT (cr=8834 pr=0 pw=0 time=80783 us)
1702 HASH JOIN (cr=8834 pr=0 pw=0 time=79089 us)
11349 HASH JOIN (cr=6377 pr=0 pw=0 time=51629 us)
3 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3823 us)
3 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=3817 us)
3783 NESTED LOOPS (cr=3920 pr=0 pw=0 time=28374 us)
1 PARTITION RANGE ALL PARTITION: 1 2 (cr=4 pr=0 pw=0 time=91 us)
1 TABLE ACCESS BY LOCAL INDEX ROWID SECTORS PARTITION: 1 2 (cr=4 pr=0 pw=0 time=78 us)
1 INDEX RANGE SCAN SECTORS_SECTORID_IND PARTITION: 1 2 (cr=3 pr=0 pw=0 time=39 us)(object id 1834180)
3783 PARTITION RANGE ALL PARTITION: 1 2 (cr=3916 pr=0 pw=0 time=24510 us)
3783 TABLE ACCESS BY LOCAL INDEX ROWID SECTORS PARTITION: 1 2 (cr=3916 pr=0 pw=0 time=24504 us)
3784 DOMAIN INDEX SECTORS_SX (cr=365 pr=0 pw=0 time=13144 us)
478112 PARTITION RANGE ALL PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=87 us)
478112 TABLE ACCESS FULL SECTOR_FREQ_PARAMS PARTITION: 1 2 (cr=2457 pr=0 pw=0 time=69 us)
8510 BUFFER SORT (cr=0 pr=0 pw=0 time=2577 us)
5 VIEW (cr=0 pr=0 pw=0 time=51 us)
5 SORT UNIQUE (cr=0 pr=0 pw=0 time=41 us)
5 UNION-ALL (cr=0 pr=0 pw=0 time=22 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=1 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=0 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=3 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=1 us)
1 FAST DUAL (cr=0 pr=0 pw=0 time=1 us)
select text
from
view$ where rowid=:1
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 2 0.00 0.00 0 4 0 2
total 6 0.00 0.00 0 4 0 2
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
1 TABLE ACCESS BY USER ROWID VIEW$ (cr=1 pr=0 pw=0 time=14 us)
select u.name, o.name, a.interface_version#, o.obj#
from
association$ a, user$ u, obj$ o where a.obj# = :1
and a.property = :2
and a.statstype# = o.obj# and
u.user# = o.owner#
call count cpu elapsed disk query current rows
Parse 5 0.00 0.00 0 0 0 0
Execute 6 0.00 0.00 0 0 0 0
Fetch 5 0.00 0.00 0 33 0 4
total 16 0.00 0.00 0 33 0 4
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
1 NESTED LOOPS (cr=8 pr=0 pw=0 time=82 us)
1 NESTED LOOPS (cr=6 pr=0 pw=0 time=43 us)
1 TABLE ACCESS BY INDEX ROWID ASSOCIATION$ (cr=2 pr=0 pw=0 time=26 us)
1 INDEX RANGE SCAN ASSOC1 (cr=1 pr=0 pw=0 time=11 us)(object id 387)
1 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=14 us)
1 INDEX UNIQUE SCAN I_OBJ1 (cr=3 pr=0 pw=0 time=9 us)(object id 36)
1 TABLE ACCESS CLUSTER USER$ (cr=2 pr=0 pw=0 time=36 us)
1 INDEX UNIQUE SCAN I_USER# (cr=1 pr=0 pw=0 time=3 us)(object id 11)
declare
cost sys.ODCICost := sys.ODCICost(NULL, NULL, NULL, NULL);
obj0 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
obj1 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
begin
:1 := "MDSYS"."SDO_STATISTICS".ODCIStatsFunctionCost(
sys.ODCIFuncInfo('MDSYS',
'SDO_3GL',
'WITHIN_DISTANCE',
2),
cost,
sys.ODCIARGDESCLIST(sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL))
, obj0, obj1, :5,
sys.ODCIENV(:6,:7,:8,:9));
if cost.CPUCost IS NULL then
:2 := -1.0;
else
:2 := cost.CPUCost;
end if;
if cost.IOCost IS NULL then
:3 := -1.0;
else
:3 := cost.IOCost;
end if;
if cost.NetworkCost IS NULL then
:4 := -1.0;
else
:4 := cost.NetworkCost;
end if;
exception
when others then
raise;
end;
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 2
Fetch 0 0.00 0.00 0 0 0 0
total 4 0.00 0.00 0 0 0 2
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75 (recursive depth: 1)
declare
sel number;
obj0 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
obj1 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
begin
:1 := "MDSYS"."SDO_STATISTICS".ODCIStatsSelectivity(
sys.ODCIPREDINFO('MDSYS',
'SDO_3GL',
'WITHIN_DISTANCE',
173),
sel,
sys.ODCIARGDESCLIST(sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL), sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL), sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
:3,
:4
, obj0, obj1, :5,
sys.ODCIENV(:6,:7,:8,:9));
if sel IS NULL then
:2 := -1.0;
else
:2 := sel;
end if;
exception
when others then
raise;
end;
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.00 0.00 0 0 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75 (recursive depth: 1)
select a.default_cpu_cost, a.default_io_cost
from
association$ a where a.obj# = :1
and a.property = :2
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 1 0 0
total 3 0.00 0.00 0 1 0 0
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
0 TABLE ACCESS BY INDEX ROWID ASSOCIATION$ (cr=1 pr=0 pw=0 time=7 us)
0 INDEX RANGE SCAN ASSOC1 (cr=1 pr=0 pw=0 time=6 us)(object id 387)
declare
cost sys.ODCICost := sys.ODCICost(NULL, NULL, NULL, NULL);
obj1 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
obj2 "MDSYS"."SDO_GEOMETRY" := "MDSYS"."SDO_GEOMETRY"(NULL, NULL, NULL, NULL, NULL);
begin
:1 := "MDSYS"."SDO_STATISTICS".ODCIStatsIndexCost(
sys.ODCIINDEXINFO('DAE_ADMIN',
'SECTORS_SX',
sys.ODCICOLINFOLIST(sys.ODCICOLINFO('DAE_ADMIN', 'SECTORS', '"GEOLOC"', 'SDO_GEOMETRY', 'MDSYS', NULL)),
NULL,
3,
0),
1.00000000,
cost,
sys.ODCIQUERYINFO(2,
NULL),
sys.ODCIPREDINFO('MDSYS',
'SDO_WITHIN_DISTANCE',
NULL,
141),
sys.ODCIARGDESCLIST(sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL), sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL), sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(2, 'SECTORS', 'DAE_ADMIN', '"GEOLOC"', NULL, NULL, NULL), sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
:6,
:7
, obj2, :8,
sys.ODCIENV(:9,:10,:11,:12));
if cost.CPUCost IS NULL then
:2 := -1.0;
else
:2 := cost.CPUCost;
end if;
if cost.IOCost IS NULL then
:3 := -1.0;
else
:3 := cost.IOCost;
end if;
if cost.NetworkCost IS NULL then
:4 := -1.0;
else
:4 := cost.NetworkCost;
end if;
:5 := cost.IndexCostInfo;
exception
when others then
raise;
end;
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 75 (recursive depth: 1)
SELECT diminfo, nvl(srid,-1)
FROM
ALL_SDO_GEOM_METADATA WHERE OWNER = 'DAE_ADMIN' AND TABLE_NAME =
NLS_UPPER('SECTORS') AND '"'||COLUMN_NAME||'"' = '"GEOLOC"'
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 44 0 1
total 3 0.00 0.00 0 44 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
1 TABLE ACCESS BY INDEX ROWID SDO_GEOM_METADATA_TABLE (cr=44 pr=0 pw=0 time=1743 us)
1 INDEX RANGE SCAN SDO_GEOM_IDX (cr=43 pr=0 pw=0 time=1732 us)(object id 45847)
1 UNION-ALL (cr=42 pr=0 pw=0 time=1702 us)
1 FILTER (cr=42 pr=0 pw=0 time=1697 us)
1 HASH JOIN (cr=42 pr=0 pw=0 time=1694 us)
1 MERGE JOIN CARTESIAN (cr=42 pr=0 pw=0 time=955 us)
1 NESTED LOOPS (cr=42 pr=0 pw=0 time=462 us)
1 NESTED LOOPS OUTER (cr=38 pr=0 pw=0 time=446 us)
1 HASH JOIN OUTER (cr=35 pr=0 pw=0 time=434 us)
1 NESTED LOOPS OUTER (cr=17 pr=0 pw=0 time=111 us)
1 NESTED LOOPS OUTER (cr=17 pr=0 pw=0 time=107 us)
1 NESTED LOOPS (cr=17 pr=0 pw=0 time=100 us)
3 NESTED LOOPS (cr=9 pr=0 pw=0 time=61 us)
1 TABLE ACCESS BY INDEX ROWID USER$ (cr=2 pr=0 pw=0 time=16 us)
1 INDEX UNIQUE SCAN I_USER1 (cr=1 pr=0 pw=0 time=6 us)(object id 44)
3 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=7 pr=0 pw=0 time=44 us)
3 INDEX RANGE SCAN I_OBJ2 (cr=4 pr=0 pw=0 time=16 us)(object id 37)
1 TABLE ACCESS CLUSTER TAB$ (cr=8 pr=0 pw=0 time=36 us)
1 INDEX UNIQUE SCAN I_OBJ# (cr=5 pr=0 pw=0 time=18 us)(object id 3)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=3 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=2 us)(object id 36)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=1 us)(object id 36)
75 TABLE ACCESS FULL USER$ (cr=18 pr=0 pw=0 time=35 us)
0 TABLE ACCESS CLUSTER SEG$ (cr=3 pr=0 pw=0 time=10 us)
0 INDEX UNIQUE SCAN I_FILE#_BLOCK# (cr=3 pr=0 pw=0 time=9 us)(object id 9)
1 TABLE ACCESS CLUSTER TS$ (cr=4 pr=0 pw=0 time=13 us)
1 INDEX UNIQUE SCAN I_TS# (cr=2 pr=0 pw=0 time=6 us)(object id 7)
1 BUFFER SORT (cr=0 pr=0 pw=0 time=489 us)
1 FIXED TABLE FULL X$KSPPI (cr=0 pr=0 pw=0 time=470 us)
1120 FIXED TABLE FULL X$KSPPCV (cr=0 pr=0 pw=0 time=1125 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 TABLE ACCESS CLUSTER TAB$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ# (cr=0 pr=0 pw=0 time=0 us)(object id 3)
0 TABLE ACCESS CLUSTER COL$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID COLTYPE$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_COLTYPE2 (cr=0 pr=0 pw=0 time=0 us)(object id 170)
0 TABLE ACCESS CLUSTER TS$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_TS# (cr=0 pr=0 pw=0 time=0 us)(object id 7)
0 TABLE ACCESS CLUSTER SEG$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_FILE#_BLOCK# (cr=0 pr=0 pw=0 time=0 us)(object id 9)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ3 (cr=0 pr=0 pw=0 time=0 us)(object id 38)
0 TABLE ACCESS CLUSTER USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER# (cr=0 pr=0 pw=0 time=0 us)(object id 11)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 TABLE ACCESS CLUSTER USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER# (cr=0 pr=0 pw=0 time=0 us)(object id 11)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 TABLE ACCESS CLUSTER USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER# (cr=0 pr=0 pw=0 time=0 us)(object id 11)
0 BUFFER SORT (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KSPPI (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KSPPCV (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
0 VIEW ALL_SYNONYMS (cr=0 pr=0 pw=0 time=0 us)
0 SORT UNIQUE (cr=0 pr=0 pw=0 time=0 us)
0 UNION-ALL (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 TABLE ACCESS BY INDEX ROWID SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_SYN1 (cr=0 pr=0 pw=0 time=0 us)(object id 101)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 VIEW ALLSYNONYMS_TREE (cr=0 pr=0 pw=0 time=0 us)
0 CONNECT BY WITH FILTERING (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 COUNT (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_SYN1 (cr=0 pr=0 pw=0 time=0 us)(object id 101)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 CONNECT BY PUMP (cr=0 pr=0 pw=0 time=0 us)
0 COUNT (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 COUNT (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 HASH JOIN (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL USER$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS FULL OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 36)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_SYN1 (cr=0 pr=0 pw=0 time=0 us)(object id 101)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID SYN$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_SYN1 (cr=0 pr=0 pw=0 time=0 us)(object id 101)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS OUTER (cr=0 pr=0 pw=0 time=0 us)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 44)
0 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 37)
0 INDEX UNIQUE SCAN I_TYPED_VIEW1 (cr=0 pr=0 pw=0 time=0 us)(object id 100)
0 INDEX UNIQUE SCAN I_VIEW1 (cr=0 pr=0 pw=0 time=0 us)(object id 99)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
SELECT nvl(sdo_level,0), nvl(sdo_numtiles,0), nvl(sdo_maxlevel, 0),
nvl(sdo_index_table, 'DEFAULT'), sdo_index_primary, sdo_index_type,
nvl(sdo_rtree_height, 0), nvl(sdo_rtree_num_nodes, 0),
nvl(sdo_rtree_dimensionality, 0), nvl(sdo_rtree_fanout, 0),
nvl(sdo_rtree_root, 'EMPTY'), nvl(sdo_rtree_seq_name, 'DEFAULT'),
sdo_index_partition, nvl(sdo_partitioned, 0), nvl(sdo_layer_gtype,
'DEFAULT'), nvl(sdo_index_dims, 0), nvl(sdo_rtree_pctfree, 10),
nvl(sdo_rtree_quality, 1), nvl(sdo_index_version, 0), nvl(sdo_tablespace,
'DEFAULT'), nvl(sdo_index_geodetic, 'FALSE'), sdo_index_status,
nvl(sdo_nl_index_table, 'NULL'), nvl(sdo_dml_batch_size, 1),
nvl(sdo_rtree_ent_xpnd, 0.0)
FROM
all_sdo_index_metadata WHERE sdo_index_owner = 'DAE_ADMIN' and
sdo_index_name = 'SECTORS_SX' and sdo_index_partition = UPPER(:ptname)
ORDER BY SDO_INDEX_PRIMARY
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 43 0 1
total 3 0.00 0.00 0 43 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
select count(*)
from
mdsys.geodetic_srids where srid = 99900001
call count cpu elapsed disk query current rows
Parse 3405 0.01 0.01 0 0 0 0
Execute 3405 0.04 0.03 0 0 0 0
Fetch 3405 0.07 0.03 0 10215 0 3405
total 10215 0.14 0.08 0 10215 0 3405
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
1 SORT AGGREGATE (cr=3 pr=0 pw=0 time=26 us)
0 TABLE ACCESS BY INDEX ROWID SDO_CS_SRS (cr=3 pr=0 pw=0 time=17 us)
1 INDEX UNIQUE SCAN SYS_C003941 (cr=2 pr=0 pw=0 time=9 us)(object id 48833)
select wktext, srid
from
mdsys.cs_srs where srid = 99900001
call count cpu elapsed disk query current rows
Parse 1704 0.00 0.01 0 0 0 0
Execute 1704 0.00 0.01 0 0 0 0
Fetch 1704 0.03 0.01 0 5112 0 1704
total 5112 0.03 0.03 0 5112 0 1704
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
1 TABLE ACCESS BY INDEX ROWID SDO_CS_SRS (cr=3 pr=0 pw=0 time=8 us)
1 INDEX UNIQUE SCAN SYS_C003941 (cr=2 pr=0 pw=0 time=5 us)(object id 48833)
SELECT partition_count
FROM
all_part_indexes WHERE owner='DAE_ADMIN' and index_name='SECTORS_SX'
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 18 0 1
total 3 0.00 0.00 0 18 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
1 FILTER (cr=18 pr=0 pw=0 time=70 us)
1 NESTED LOOPS (cr=18 pr=0 pw=0 time=67 us)
1 NESTED LOOPS OUTER (cr=15 pr=0 pw=0 time=59 us)
1 NESTED LOOPS (cr=13 pr=0 pw=0 time=52 us)
1 NESTED LOOPS (cr=10 pr=0 pw=0 time=42 us)
1 NESTED LOOPS (cr=7 pr=0 pw=0 time=29 us)
1 TABLE ACCESS BY INDEX ROWID USER$ (cr=2 pr=0 pw=0 time=8 us)
1 INDEX UNIQUE SCAN I_USER1 (cr=1 pr=0 pw=0 time=4 us)(object id 44)
1 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=5 pr=0 pw=0 time=20 us)
1 INDEX RANGE SCAN I_OBJ2 (cr=4 pr=0 pw=0 time=14 us)(object id 37)
1 TABLE ACCESS BY INDEX ROWID PARTOBJ$ (cr=3 pr=0 pw=0 time=10 us)
1 INDEX UNIQUE SCAN I_PARTOBJ$ (cr=2 pr=0 pw=0 time=6 us)(object id 263)
1 TABLE ACCESS BY INDEX ROWID IND$ (cr=3 pr=0 pw=0 time=8 us)
1 INDEX UNIQUE SCAN I_IND1 (cr=2 pr=0 pw=0 time=5 us)(object id 39)
0 TABLE ACCESS CLUSTER TS$ (cr=2 pr=0 pw=0 time=6 us)
0 INDEX UNIQUE SCAN I_TS# (cr=2 pr=0 pw=0 time=4 us)(object id 7)
1 INDEX UNIQUE SCAN I_OBJ1 (cr=3 pr=0 pw=0 time=7 us)(object id 36)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
SELECT nvl(sdo_index_partition, 'DEFAULT'), nvl(sdo_index_table, 'DEFAULT'),
nvl(sdo_rtree_height,0), nvl(sdo_rtree_num_nodes,0),
nvl(sdo_rtree_root,'EMPTY'), nvl(sdo_layer_gtype, 'DEFAULT'),
nvl(sdo_index_status, 'VALID'), sdo_root_mbr
FROM
all_sdo_index_metadata WHERE sdo_index_owner='DAE_ADMIN' and sdo_index_name=
'SECTORS_SX' and sdo_index_partition is not null ORDER BY
sdo_index_partition
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.00 0.00 0 45 0 2
total 4 0.00 0.00 0 45 0 2
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
2 TABLE ACCESS BY INDEX ROWID SDO_INDEX_METADATA_TABLE (cr=45 pr=0 pw=0 time=155 us)
2 INDEX RANGE SCAN SDO_IDX_MDATA_IDX (cr=43 pr=0 pw=0 time=142 us)(object id 48798)
1 FILTER (cr=40 pr=0 pw=0 time=121 us)
1 NESTED LOOPS OUTER (cr=40 pr=0 pw=0 time=118 us)
1 NESTED LOOPS OUTER (cr=38 pr=0 pw=0 time=111 us)
1 NESTED LOOPS OUTER (cr=34 pr=0 pw=0 time=100 us)
1 NESTED LOOPS (cr=31 pr=0 pw=0 time=92 us)
1 NESTED LOOPS (cr=22 pr=0 pw=0 time=78 us)
1 NESTED LOOPS OUTER (cr=18 pr=0 pw=0 time=66 us)
1 NESTED LOOPS (cr=15 pr=0 pw=0 time=56 us)
3 NESTED LOOPS (cr=9 pr=0 pw=0 time=34 us)
1 TABLE ACCESS BY INDEX ROWID USER$ (cr=2 pr=0 pw=0 time=6 us)
1 INDEX UNIQUE SCAN I_USER1 (cr=1 pr=0 pw=0 time=4 us)(object id 44)
3 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=7 pr=0 pw=0 time=24 us)
3 INDEX RANGE SCAN I_OBJ2 (cr=4 pr=0 pw=0 time=9 us)(object id 37)
1 TABLE ACCESS BY INDEX ROWID IND$ (cr=6 pr=0 pw=0 time=20 us)
1 INDEX UNIQUE SCAN I_IND1 (cr=5 pr=0 pw=0 time=12 us)(object id 39)
1 TABLE ACCESS CLUSTER TS$ (cr=3 pr=0 pw=0 time=9 us)
1 INDEX UNIQUE SCAN I_TS# (cr=2 pr=0 pw=0 time=4 us)(object id 7)
1 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=10 us)
1 INDEX UNIQUE SCAN I_OBJ1 (cr=3 pr=0 pw=0 time=6 us)(object id 36)
1 TABLE ACCESS CLUSTER USER$ (cr=9 pr=0 pw=0 time=13 us)
1 INDEX UNIQUE SCAN I_USER# (cr=1 pr=0 pw=0 time=3 us)(object id 11)
0 TABLE ACCESS CLUSTER SEG$ (cr=3 pr=0 pw=0 time=7 us)
0 INDEX UNIQUE SCAN I_FILE#_BLOCK# (cr=3 pr=0 pw=0 time=6 us)(object id 9)
1 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=7 us)
1 INDEX UNIQUE SCAN I_OBJ1 (cr=3 pr=0 pw=0 time=4 us)(object id 36)
1 TABLE ACCESS CLUSTER USER$ (cr=2 pr=0 pw=0 time=6 us)
1 INDEX UNIQUE SCAN I_USER# (cr=1 pr=0 pw=0 time=2 us)(object id 11)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 103)
0 FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0 FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
SELECT info
from
DAE_ADMIN.MDRT_1BFCC9$ where rowid = :rid
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 1 0 1
total 3 0.00 0.00 0 1 0 1
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
Rows Row Source Operation
1 TABLE ACCESS BY USER ROWID MDRT_1BFCC9$ (cr=1 pr=0 pw=0 time=14 us)
SELECT info
from
DAE_ADMIN.MDRT_1C72A2$ where rowid = :rid
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 187 0.00 0.00 0 0 0 0
Fetch 187 0.01 0.00 0 187 0 187
total 376 0.01 0.00 0 187 0 187
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 62 (recursive depth: 1)
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 3 0.00 0.00 0 0 0 0
Execute 3 0.04 0.03 0 1173 0 2
Fetch 569 1.20 1.25 0 71026 2 8512
total 575 1.25 1.29 0 72199 2 8514
Misses in library cache during parse: 1
Misses in library cache during execute: 1
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
Parse 5128 0.01 0.03 0 0 0 0
Execute 5314 0.04 0.05 0 0 0 3
Fetch 5310 0.12 0.04 0 15703 0 5308
total 15752 0.18 0.12 0 15703 0 5311
Misses in library cache during parse: 0
5123 user SQL statements in session.
8 internal SQL statements in session.
5131 SQL statements in session.
Trace file: D:\oracle\product\10.2.0\admin\dae\udump\dae_ora_17004_sql2.trc
Trace file compatibility: 10.01.00
Sort options: default
0 session in tracefile.
5123 user SQL statements in trace file.
8 internal SQL statements in trace file.
5131 SQL statements in trace file.
16 unique SQL statements in trace file.
50973 lines in trace file.
21 elapsed seconds in trace file. -
Manipulating data from a ref cursor in the data block of a form
I am using Oracle Forms 10g. I have a ref cursor which returns columns A, B, C, D, E where B, C, D, E are values. The "Query Data Source Name" attribute in the datablock contains "CCTR_Extract_pkg.cctr_refcur". The "Column Name" attribute of item A contains "A", item B contains "B", etc. All of these columns are displayed on the form and it all works perfectly.
I have a new request, the users would like a 6th column displayed - column F - where it equals D - B.
Is there any way of doing this in the form only or do I need to change the ref cursor to accomodate the new column and then the form?
If it can be achieved in the Form (only) - then how do I reference the 2 columns?
Thanks in anticipation
Michael
Edited by: user8897365 on 24-Aug-2011 10:32Is there any way of doing this in the form only or do I need to change the ref cursor to accomodate the new column and then the form? The REF_CURSOR is the data source of your block so you will have to modify the CCTR_Extract_pkg package and cctr_refcur REF_CURSOR.
If it can be achieved in the Form (only) - then how do I reference the 2 columns?After you have modified your database package, I recommend you run the Data Block Wizard on your block and let Forms detect the 2 new columns. You can do this manually, but it is safer to let Forms do it for you. If you want to do it manually, open the Query Data Source Columns property and add your new columns.
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly. -
Ref Cursor Problem in Oracle Forms 6i
Hi all.
In Oracle Forms 6i, can not I do this?
DECLARE
TYPE CUR_REF IS REF CURSOR;
CUR_PRODUCTS CUR_REF;
VAR_QUERY VARCHAR2(3000) := 'SELECT something FROM table';
BEGIN
OPEN CUR_PRODUCTS FOR VAR_QUERY;
END;
It generates error on opening that it expects a SELECT statement.
How can I open a dynamic ref cursor in Oracle Forms 6i??? The same thing works fine in PL/SQL.
Regards,
Zaaf
Thanks in advance.It could be like this:
PROCEDURE dynamic_cursor ( PC$Clause IN Varchar2 )
IS
cursor_number EXEC_SQL.CursType;
-- Variables for the data to be returned into
LC$ACTYPE Number;
-- Control variables
LN$count Number;
LC$sql_order Varchar2(256);
BEGIN
-- Open the cursor --
cursor_number := Exec_SQL.Open_cursor;
-- build the complete SQL order --
LC$sql_order := PC$clause ;
-- Parse the SQL order --
EXEC_SQL.PARSE(cursor_number, LC$sql_order);
-- Define the columns for the data to be returned --
EXEC_SQL.DEFINE_COLUMN(cursor_number,1,LC$ACTYPE);
-- Execute the Cursor --
LN$count := EXEC_SQL.EXECUTE(cursor_number);
-- Loop and fetch each row from the result set --
While EXEC_SQL.FETCH_ROWS(cursor_number) > 0 Loop
EXEC_SQL.COLUMN_VALUE(cursor_number,1,LC$ACTYPE);
begin
select chqfac, pasfac, indbcr ,
staxfl, excise, incchg, cat001 , trntyp , subtyp
into s_chkbok, s_pasbok, s_intber,
s_staxfl, s_excise, s_incchg, s_cat001 , ss_trntyp , ss_subtyp
from stfeacty
where brancd = s_brancd
and actype = LC$ACTYPE;
s_actype := LC$ACTYPE ;
exception
when no_data_found then
NULL;
when too_many_rows then
NULL;
end;
End Loop ;
-- Close the cursors
EXEC_SQL.CLOSE_CURSOR(cursor_number);
EXCEPTION
When EXEC_SQL.INVALID_CONNECTION Then
message('Unexpected Invalid Connection error from EXEC_SQL');
When EXEC_SQL.PACKAGE_ERROR Then
message('Unexpected error from EXEC_SQL: '||to_char(EXEC_SQL.LAST_ERROR_CODE)|| EXEC_SQL.LAST_ERROR_MESG);
If EXEC_SQL.IS_OPEN(cursor_number) Then
EXEC_SQL.CLOSE_CURSOR(cursor_number);
message('Exception - Cleaned up Cursor');
End if;
END; That you could call with the following:
dynamic_cursor('SELECT ac_type FROM SYSADM.SAVINGS');But, if the query is as simple with only the table name change, you could aslo use a simpliest solution based on a record group.
Francois -
Will REF CURSOR support for Oracle Forms 6i?
Hi,
I need to use ref cursor in my from. My cursor query should be dynamically append the "where clause". Hence I used the dynamic query with ref cursor.
But my problem is , when I compile the form it gives error for the line " OPEN emp_record FOR l_query;"
You need to use "select" statement.
Is there any solution for this in forms?
I know it supports for other PL/SQL areas.
Please help me. below is my code sample,
DECLARE
TYPE emp_refcur IS REF CURSOR;
emp_record emp_refcur;
TYPE rec_emp_data IS RECORD
emp_no VARCHAR2(40),
emp_rec rec_emp_data;
l_query VARCHAR2(4000);
BEGIN
l_query := 'SELECT empno
FROM emp ';
IF :CONTROL.ename IS NOT NULL THEN
l_query := l_query||' AND ename = '''||:CONTROL.ename||''' ';
END IF;
OPEN emp_record FOR l_query;
LOOP
FETCH emp_record INTO emp_rec;
EXIT WHEN emp_record%NOTFOUND;
dbms_output.put_line(emp_rec.emp_no);
END LOOP;
CLOSE emp_record;
END; Thanks
RajeshHi,
It's been a while since I used Forms 6i, but I remember hitting a similar problem. I don't think (and stress think!) that the PLSQL engine that comes with Forms 6i recognises ref_cursors.
The work-around I used was to move the functionality to the database and call it from forms.
Hope this helps.
Regards
Ian -
Using plsql table and ref cursor in oracle forms 10g
Hi all,
Can anyone give me an example of a scenario where we need to create a form manually based on a database stored procedures.
And in that procedure i have created a pl/sql table and a ref cursor in data base level.
CREATE OR REPLACE PACKAGE SCOTT.BONUS_PKG IS TYPE bonus_rec
IS RECORD(
empno bonus_EMP.empno%TYPE,
ename bonus_EMP.ename%TYPE,
job bonus_EMP.job%TYPE,
sal bonus_EMP.sal%TYPE,
comm bonus_EMP.comm%TYPE);
TYPE b_cursor IS REF CURSOR RETURN bonus_rec;
TYPE bontab IS TABLE OF bonus_rec INDEX BY BINARY_INTEGER;
PROCEDURE bonus_refcur(bonus_data IN OUT b_cursor);
PROCEDURE bonus_query(bonus_data IN OUT bontab);
END bonus_pkg;
CREATE OR REPLACE PACKAGE BODY SCOTT.BONUS_PKG IS
PROCEDURE bonus_query(bonus_data IN OUT bontab) IS
ii NUMBER;
CURSOR bonselect IS
SELECT empno, ename, job, sal, comm FROM bonus_EMP ORDER BY empno;
BEGIN
OPEN bonselect;
ii := 1;
LOOP
FETCH bonselect INTO
bonus_data( ii ).empno,
bonus_data( ii ).ename,
bonus_data( ii ).job,
bonus_data( ii ).sal,
bonus_data( ii ).comm;
EXIT WHEN bonselect%NOTFOUND;
ii := ii + 1;
END LOOP;
END bonus_query;
PROCEDURE bonus_refcur(bonus_data IN OUT b_cursor) IS
BEGIN
OPEN bonus_data FOR SELECT empno, ename, job, sal, comm FROM bonus_EMP ORDER BY empno;
END bonus_refcur;
END bonus_pkg;
i want to populate the data in forms manually not using forms data block wizard and programmatically.
please reply...Can anyone give me an example of a scenario where we need to create a form manually based on a database stored procedures.Typically, you would use a procedure based block when you have a collection of data from multiple tables presented in a Form and your user needs to be able to update the information displayed.
From your code example, it looks like you are using Oracle Support document "Basing a Block on a Stored Procedure - Sample Code [ID 66887.1]". If this is the case, keep following the document - it walks you through all of the steps. There is no need to Manually configure things that the Data Block Wizard will perform for you!
i want to populate the data in forms manually not using forms data block wizard and programmatically. Why? Let the Data Block Wizard take care of configuring your block based on a procedure for you. There is no need to manually loop through the data! I've actually done what you are attempting and it was more work than was needed. Let Forms do the work for you. :)
If you absolutely must do things manually, I recommend you use the PROCEDURE bonus_query(bonus_data IN OUT bontab) instead of the bonus_refcur(bonus_data IN OUT b_cursor) . Then, in your code create a variable of type BONTAB and then call the bonus_query procedure. Then it is a simple case of looping through the table of records returned by the bonus_query procedure. For example:
DECLARE
t_bonus bonus_pkb.bontab;
BEGIN
bonus_pkg.bonus_query(t_bonus);
FOR i in 1 .. t_bonus.count LOOP
:YOUR_BLOCK.EMPLOYEE_NUMBER := t_bonus(i).empno;
:YOUR_BLOCK.EMPLOYEE_NAME := t_bonus(i).ename;
:YOUR_BLOCK.EMPLOYEE_JOB := t_bonus(i).job;
:YOUR_BLOCK.EMPLOYEE_SALARY := t_bonus(i).sal;
:YOUR_BLOCK.EMPLOYEE_COMMISSION := t_bonus(i).comm;
END LOOP;
END;This code sample demonstrates the basics, but as it is sample code - you will have to adapt it to your situation.
Also, I strongly recommend you look at the article InoL listed. This is a very comprehensive discussion on REF CURSORs. If you are set on using a procedure based data source - it is more efficient to pass the table of records back to your form than it is to pass a ref cursor. Using a ref cursor, you might as well just using a standard named cursor and loop through your named cursor. The effect is the same (one row returned at a time creating lots of network traffic). Using the table of records is more efficient because the entire data set is returned so network traffic is reduced.
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly. -
How to out Dynamic ref cursor from Procedure to Forms
Hi
I am trying to out Dynamic ref cursor from Procedure to Forms, But I am unable to do so. however cursor return the value within procedure but I am failed to capture the same in Forms
Pl advice suggestion if any, Here I am attaching full procedure for reference
CREATE PACKAGE winepkg
IS
TYPE wine IS RECORD ( mynumber number);
/* Define the REF CURSOR type. */
TYPE wine_type IS REF CURSOR RETURN wine;
END winepkg;
CREATE procedure find_wine
(col1_in in number,
c1 out winepkg.wine_type) as
vsql varchar2(1000);
cur sys_refcursor;
x number;
BEGIN
vsql:='select bo_id from bo_details where bo_details.bo_id = '||col1_in ;
open cur for vsql;
c1:=cur;
--fetch c1 into x;
--dbms_output.put_line(x);
END find_wine;
In front end forms
Declare
TYPE F is REF CURSOR;
CUR_F F;
rec number;
Begin
break;
find_wine( 1601480000011078,cur_f ) ;
Loop
fetch cur_f into rec ;
Message(rec ) ;pause;
exit when cur_f%notfound ;
End loop ;
exception
when others then
Message(sqlerrm) ;pause;
End ;yo can use
declare
c_cursor EXEC_SQL.CursType;
v_stmt varchar2(2000) = 'select a, b, c from mytab where cond1'; -- you can create this value dynamically
begin
c_cursor := Exec_SQL.Open_cursor;
EXEC_SQL.PARSE(c_articulos, v_stmt);
EXEC_SQL.DEFINE_COLUMN(c_articulos,1, v_colchar1, 30);
EXEC_SQL.DEFINE_COLUMN(c_articulos,2, v_colchar2, 15);
EXEC_SQL.DEFINE_COLUMN(c_articulos,3, v_colchar3, 30);
v_exec := EXEC_SQL.EXECUTE(c_cursor);
WHILE EXEC_SQL.FETCH_ROWS(c_cursor) > 0 LOOP
EXEC_SQL.COLUMN_VALUE(c_cursor,1,v_colchar1);
EXEC_SQL.COLUMN_VALUE(c_c_cursor,2,v_colchar2);
EXEC_SQL.COLUMN_VALUE(c_c_cursor,3,v_colchar3);
assign_values_to_block;
END LOOP;
EXEC_SQL.CLOSE_CURSOR(c_cursor);
end;
and WORKS IN FORMS 6 -
Using ref cursor in after parameter form in reports
hi everyone,
I have problem in usage of ref cursor in after parameter form. My actual requirement is I have user parameter :p_minval, :p_maxval. The values into these user parameters will be coming dynamically using sql_statement as shown below
select min(empid),max(empid) into :p_minval, :p_maxval from emp where empid in (:p_emp);
I will be writing this query in the after parameter form
:p_emp is a lexical parameter as per me but the after parameter form is taking it as a bind variable. so I decided to define a ref cursor and then use it for retrieve. But when I use ref cursor it is returning pl/sql error 591 saying that this is not supported by client side can anyone help me plz..
The following is the code i tried to use in after parameter form
function afterPform return boolean is
type rc is ref cursor;
l_rc rc;
sqlstmt varchar2(512);
begin
sqlstmt:='select min(empid),max(empid) from emp where empid in ('||:p_emp||')';
open l_rc for
select max(empid) from emp where empid in ('||:p_emp||')';
fetch l_rc into :p_maxval;
close l_rc;
return(true);
end;
thanks & regards
venkatI ran into the same problem. any body knows why?
-
Forms Data-Block based on stored procedures - REF CURSOR feature NOT FUNCTIONING
This topic is related to another topic in this forum titled "FORMS HOW TO SET QUERY SOURCE ARGUMENTS??" I posted my message there as well. I am posting as a NEW TOPIC so that it catches the attention of Oracle Support.
I built a data form based on a stored procedure and REF CURSOR IN OUT parameter.
My procedure takes a IN parameter to fill in the criteria for the OPEN <cursor_variable> select ... where ... statement.
In the Value setting of the Query source Arguments , I set the VALUE to ":BLOCK_NAME.ITEM_NAME" at design time to supply the input value to the procedure. this works to the extent of making available the form item value to the stored procedure parameter. I verified this by doing an insert into some debug table , of the incoming parameter value inside my stored procedure.
The cursor gets opened properly into the REF cursor variable. I verified this by fetching a record into a local variable and inserting the value into a debug table again in the stored procedure.
(I took care to close and re-open the REF cursor variable again - so that the front-end can continue to fetch it from the first record. )
***** PROBLEM **************
But the front end forms runtime is giving me a FRM-40301 - query returned no records even though the REF cursor is returned properly opened.
Did anybody else face the same problem ??
Please post what you found.
Thanks,
Shankaran
nullThis topic is discussed at length in another thread "How Set Value For Query DataSource Arguments?"
But I am posting the findings here as well.
THIS TOPIC IS CLOSED.
My Bad. The problem Cause : I did not include all columns in the
cursor rowtype in the Data-block. In the wizard for the data block , I selected ONLY the columns that I needed. But I was doing a Select * from <my_table> in my open cursor <Cursor-Variable> .... The <Cursor Variable>
itself was declared <my_table>%rowtype
FIX : The Data Block structure (columns included as items) should match the cursor record Structure. One may or may not
display all the columns in the LAYOUT though.
But I don't understand why it gives such a misleading message like FRM-40301 Query retrieved no records. Oracle Team fix it.
Hope this helps people who face the same problem.
Thanks, -
Retrieve to forms 6i a ref cursor from a store procedure
hi, i wanna know how to retrieving to forms 6i a ref cursor or a sys_refcursor from a function or a store procedure.
i`ll be very gradeful if someone send me the code.
sorry about my english, the spanish is my native languaje.I think you can use procedure similar to this one:
example:
My sample table:
SQL> desc small_perf_table1;
Name Null? Type
COL1 NUMBER
COL2 VARCHAR2(10)
COL3 VARCHAR2(1)
Simple data inside:
SQL> select col1 from small_perf_table1
2 where rownum < 10;
COL1
1
2
3
4
5
6
7
8
9
9 rows selected.
Create procedure which return variable sys_refcursor type:
SQL> CREATE OR REPLACE PROCEDURE proc_cursor_test
2 (v_cursor OUT sys_refcursor)
3 IS
4 BEGIN
5 OPEN v_cursor FOR select col1 from small_perf_table1 where rownum < 10;
6 END;
7 /
Procedure created.
And here is code you can write inside forms:
SQL> DECLARE
2 type t_cursor IS REF CURSOR;
3 v_cursor t_cursor;
4 v_col1 NUMBER;
5 BEGIN
6 proc_cursor_test(v_cursor);
7 LOOP
8 FETCH v_cursor INTO v_col1;
9 EXIT WHEN v_cursor%NOTFOUND;
10 -- DBMS_OUTPUT.PUT_LINE(v_col1); This line is only for testing inside SQL*PLUS.
11 END LOOP;
12 END;
13 /
1
2
3
4
5
6
7
8
9
PL/SQL procedure successfully completed.This is just an example.
If this example does not resolve your problems then maybe you should ask your question on forms forum.
Forms
Peter D.
Maybe you are looking for
-
Passing values between forms! Help please!!!!
I'm stuck. I don't know how to pass a value from one form to the other, and automate a task. For example, I created form1 and from that form1 I want to pass a value to form2...then I want in form2 to query the form2 so it will bring up the complete r
-
How do I make a DVD from an Aperture 3 slideshow?
I am a new user to Aperture 3 and I was wondering if an Aperture slideshow (with video) can be exported to iMovie or IDVD so I can burn it to a disk? I see the information for viewing it on the iPhone or MobileMe but I didn't see anything indicating
-
Experiences with sending SNMP-Traps to 3rd party (Nagios)
Hello Colleagues, i'm working on a project where we would like to monitor our databases additionally sending SNMP-Traps to Nagios. At the moment i'm using net-snmp-utils and snmptt. The snmptt-traphandler is running in daemon-mode and passes incoming
-
I get to the registration process, says already registered, assume it was supposed to be deactivated but no idea if I uninstalled it on my old laptop and ever installed it on my new laptop, wow, it just suddenly popped up, I will see if it actually w
-
Picking a DD payment date and a bill calculation d...
I want to pay by monthly direct debit and pay off the whole montly bill in whole every month (like the good loyal BT customer that I am). To suit my way of doing my accounts I need to get advised of the bill amount just before the end of a month in a