Example 1: Tracing a multistatement procedure
SQL> ATTACH 'FILENAME MF_PERSONNEL';
SQL> SET FLAGS 'TRACE';
SQL> DECLARE :i INTEGER;
SQL> BEGIN
cont> WHILE :i <= 10
cont> LOOP
cont> TRACE ':i is', :i;
cont> SET :i = :i +1;
cont> END LOOP;
cont> END;
~Xt: :i is 0
~Xt: :i is 1
~Xt: :i is 2
~Xt: :i is 3
~Xt: :i is 4
~Xt: :i is 5
~Xt: :i is 6
~Xt: :i is 7
~Xt: :i is 8
~Xt: :i is 9
~Xt: :i is 10
Example 2: Generating a query outline when the TRACE statement is
disabled
SQL> DECLARE :LN CHAR(40);
SQL> SET FLAGS 'NOTRACE';
SQL> BEGIN
cont> TRACE 'Jobs Held: ',
cont> (SELECT COUNT(*)
cont> FROM JOB_HISTORY
cont> WHERE EMPLOYEE_ID = '00201');
cont> SELECT LAST_NAME
cont> INTO :LN
cont> FROM EMPLOYEES
cont> WHERE EMPLOYEE_ID = '00201';
cont> END;
-- Oracle Rdb Generated Outline :
create outline QO_A17FA4B41EF1A68B_00000000
id 'A17FA4B41EF1A68B966C1A0B083BFDD4'
mode 0
as (
query (
-- Select
subquery (
EMPLOYEES 0 access path index EMPLOYEES_HASH
)
)
)
compliance optional ;
SQL>
If the query outline is generated with TRACE enabled, then
two queries appear; the first is for the subquery in the TRACE
statement and the other is for the singleton SELECT statement.
If this second query outline is used at run time with the TRACE
statement disabled, then it cannot be applied to the query.
Because the outline was created with compliance optional, the
query outline is abandoned and a new strategy is calculated. If
compliance is mandatory, then the query fails. See Example 3.
SQL> DECLARE :LN CHAR(40);
SQL> SET FLAGS 'TRACE';
SQL> BEGIN
cont> TRACE 'Jobs Held: ',
cont> (SELECT COUNT(*)
cont> FROM JOB_HISTORY
cont> WHERE EMPLOYEE_ID = '00201');
cont> SELECT LAST_NAME
cont> INTO :LN
cont> FROM EMPLOYEES
cont> WHERE EMPLOYEE_ID = '00201';
cont> END;
-- Oracle Rdb Generated Outline :
create outline QO_A17FA4B41EF1A68B_00000000
id 'A17FA4B41EF1A68B966C1A0B083BFDD4'
mode 0
as (
query (
-- Trace
subquery (
JOB_HISTORY 0 access path index JOB_HISTORY_HASH
)
)
query (
-- Select
subquery (
EMPLOYEES 0 access path index EMPLOYEES_HASH
)
)
)
compliance optional ;
~Xt: Jobs Held: 4
SQL>
Example 3: Using an Outline with Tracing Enabled That Was Created
with Tracing Disabled
This example shows that enabling the TRACE statement may affect
query outlines defined when TRACE was disabled.
SQL> DECLARE :LN CHAR(40);
SQL>
SQL> BEGIN
cont> TRACE 'Jobs Held: ',
cont> (SELECT COUNT(*)
cont> FROM JOB_HISTORY
cont> WHERE EMPLOYEE_ID = '00201');
cont> SELECT LAST_NAME
cont> INTO :LN
cont> FROM EMPLOYEES
cont> WHERE EMPLOYEE_ID = '00201';
cont> END;
~S: Outline QO_A17FA4B41EF1A68B_00000000 used
~S: Outline/query mismatch; assuming JOB_HISTORY 0 renamed to EMPLOYEES 0
~S: Full compliance with the outline was not possible
Get Retrieval by index of relation EMPLOYEES
Index name EMPLOYEES_HASH [1:1] Direct lookup