Shaleen,
 
I have not been able to dig deeper (yet) into this. However the following
_may_ be why this is not working: I believe that the stored outline is
matched with an about-to-be-executed SQL using the Hash value of the SQL.
The hash value is computed by some mumbo-jumbo based on the actual SQL
string - thus even a single extra space in the to-be-executed SQL will not
pick up the previously stored Outline since the hash value will be
different. Also, the hash value may depend on the shared_pool_size and
shared_pool_reserved_sizes and any changes will require Outline to be
generated again... (Gurus may want to add to this)
 
John Kanagaraj
Oracle Applications DBA
DBSoft Inc
(W): 408-970-7002

So WHO is the Reason for the Season?! Write me for details!

** The opinions and statements above are entirely my own and not those of my
employer or clients **


-----Original Message-----
Sent: Wednesday, December 11, 2002 9:29 PM
To: Multiple recipients of list ORACLE-L
outlines


I tried this even without bind variable and could not make it work from a
stored procedure. ANy help over here will be very appreciated
Folllowing is the testcase.
 
Thanks
Shaleen
 
create table emp (num number,sal number);
insert into emp values(1,1);
 
create or replace procedure t as
total number:=0;
cursor c1 is select sal from emp;
begin
for i in c1 loop
total:=total+i.sal;
dbms_output.put_line('total salary is $'||total);
end loop;
end;
/
 
exec outln_pkg.drop_by_cat('DEFAULT');
create outline on select sal from emp;
select used from dba_outlines;
alter session set QUERY_REWRITE_ENABLED=true;
alter session set STAR_TRANSFORMATION_ENABLED=true;
alter session set use_stored_outlines=true;
exec t;
select used from dba_outlines;
select sal from emp;
select used from dba_outlines;
----- Original Message ----- 

To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  
Sent: Wednesday, December 11, 2002 2:08 PM
outlines

All,
 
I am unable to make stored outlines work for sql statements with bind
variable in stored procedures. Please see following sample code and tell me
what am I doing wrong.
 
Thanks in Advance
 
create table emp (num number,sal number);
insert into emp values(1,1);
 
create or replace procedure t(num_i number) as
total number;
cursor c1(p1 number) is select sal from emp where num=p1;
begin
for i in c1(num_i) loop
total:=total+i.sal;
dbms_output.put_line('total salary is $'||total);
end loop;
end;
/
 
alter session set sql_trace=true;
exec t(1);
alter session set sql_trace=false;
 
create outline on select sal from emp where num=:b1;
select used from dba_outlines;
 
alter session set QUERY_REWRITE_ENABLED=true;
alter session set STAR_TRANSFORMATION_ENABLED=true;
alter session set use_stored_outlines=true;
exec t(2);
select used from dba_outlines;
 
variable b1 number;
exec :b1:=1;
select sal from emp where num=:b1;
select used from dba_outlines;
 
Thanks
Shaleen

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: John Kanagaraj
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to