Thanks, Jonathan.
Of course you are right :-)

Playing with this a little longer, I can get up to 4
versions (child_number from 0 to 3) of the same pl/sql
cursor by changing bind variable sizes. It ceases
being sharable when bv size changes from 32 to 33,
from 128 to 129 and from 2000 to 2001:

1-32
33-128
129-2000
2001-4000

I wonder if this behavior can be changed by some init
settings?

Thanks,
Boris Dali.

 --- Jonathan Lewis <[EMAIL PROTECTED]>
wrote: > 
> Notes in-line.
> 
> Regards
> 
> Jonathan Lewis
> http://www.jlcomp.demon.co.uk
> 
>   The educated person is not the person
>   who can answer the questions, but the
>   person who can question the answers -- T. Schick
> Jr
> 
> 
> One-day tutorials:
> http://www.jlcomp.demon.co.uk/tutorial.html
> 
> 
> Three-day seminar:
> see http://www.jlcomp.demon.co.uk/seminar.html
> ____UK___November
> 
> 
> The Co-operative Oracle Users' FAQ
> http://www.jlcomp.demon.co.uk/faq/ind_faq.html
> 
> 
> ----- Original Message ----- 
> To: "Multiple recipients of list ORACLE-L"
> <[EMAIL PROTECTED]>
> Sent: Tuesday, December 23, 2003 8:44 PM
> 
> 
> > Jonathan,
> >
> > Wouldn't bind variable issue that prevents cursor
> from
> > sharing be visible in bind_mismatch?
> 
> I would certainly hope so - but I remember playing
> around with v$sql_shared_cursor when it first came
> out and find cases where un-shared cursors came up
> with a full set of N's in the view.
> 
> > How can one simulate this?
> >
> > var v varchar2(1)
> > begin select count(5) into :v from dual; end;
> > /
> > select address, sql_text from v$sql where sql_text
> > like '%count(5)%';
> >
> > ADDRESS  SQL_TEXT
> > --------
> >
>
--------------------------------------------------------------------------
> -
> > 6DE92A74 SELECT count(5) from dual
> > 6DE960D0 begin select count(5) into :v from dual;
> end;
> >
> > -- Change a bind variable size:
> > var v varchar2(30)
> > begin select count(5) into :v from dual; end;
> > /
> > -- same output, no change, both sql and pl/sql
> wrapper
> > cursors are still shared
> >
> 
> Nicely done. I think I'd run event 10046
> at level 4 as well to get the bind variable dumps
> and check if the the SQL (or pl/sql) environment
> was ignoring the MAXLEN value for your
> variables.  There are a few places where 'special
> optimisations' exist in Oracle's internal coding.
> 
> You might also try it with the most extreme
> case - it may be (for example) that Oracle
> rounds up varchar2() variables to 32 bytes -
> I'd go for 1 and 4000 - just in case.
> 
> 
> 
> > -- Change a bind variable type:
> > var v number
> > begin select count(5) into :v from dual; end;
> > /
> > ADDRESS  SQL_TEXT
> > --------
> >
>
--------------------------------------------------------------------------
> --
> > 6DE92A74 SELECT count(5) from dual
> > 6DE960D0 begin select count(5) into :v from dual;
> end;
> > 6DE960D0 begin select count(5) into :v from dual;
> end;
> >
> > -- ok, here pl/sql parent (dep=0) cursor is no
> longer
> > shared
> >
> > [EMAIL PROTECTED]> select * from v$sql_shared_cursor where
> > kglhdpar = '6DE960D0';
> >
> > ADDRESS  KGLHDPAR U S O O S L S E B P I S T A B D
> L T
> > R I I R L I O S M U T N F
> > -------- -------- - - - - - - - - - - - - - - - -
> - -
> > - - - - - - - - - - - - -
> > 6DE95B54 6DE960D0 N N N N N N N N N N N N N N N N
> N N
> > N N N N N N N N N N N N N
> > 6DE86F94 6DE960D0 N N N N N N N N N N N N N N Y N
> N N
> > N N N N N N N N N N N N N
> >
> > 2 rows selected.
> >
> > -- yep, bind variables mismatch
> >
> > Thanks,
> > Boris Dali.
> >
> 
> -- 
> Please see the official ORACLE-L FAQ:
> http://www.orafaq.net
> -- 
> Author: Jonathan Lewis
>   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). 

______________________________________________________________________ 
Post your free ad now! http://personals.yahoo.ca
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Boris Dali
  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