Yes. -----Original Message----- Sent: Friday, September 06, 2002 4:28 PM To: Multiple recipients of list ORACLE-L
Kevin, Are you saying then, that by default, any static statement that is executed within PL/SQL will not have be re-parsed eg sp_proc(var in varchar2) as begin select last_name from emp where last_name = var; end; If that's the case, I wont have to change much code. mkb --- "Toepke, Kevin M" <[EMAIL PROTECTED]> wrote: > Actually its easy. Any variable declared in PL/SQL > and referenced in a > non-dynamic SQL statement is a bind variable. > > In the following example (#1), some_var is an output > bind-variable and > other_var is a input bind variable. PL/SQL does > manipulation on the > statement and will send something like the following > (#2) to the database > > #1 > DECLARE > some_var NUMBER(1); > other_var NUMBER(1) > BEGIN > SELECT 1 > INTO some_var > FROM my_table > WHERE my_column = other_var; > END; > > #2 > SELECT 1 FROM MY_TABLE WHERE MY_COLUMN = :1 > > Kevin > -----Original Message----- > Sent: Friday, September 06, 2002 1:59 PM > To: Multiple recipients of list ORACLE-L > > > John, > > You would have to ask while I've got the book at > home. But it's an > Orielly > book on PL/SQL Programming. Sorry off the top of my > head I can't remember > the > author or title. > > Dick Goulet > > ____________________Reply > Separator____________________ > Author: John Dunn <[EMAIL PROTECTED]> > Date: 9/6/2002 7:38 AM > > Despite the importance of using bind variables, the > Oracle documentation > seems to make very little reference to how to use > them(for example the > PL/SQL manual) > > Can anyone point me at any decent documentation on > the subject of using bind > variables in PL/SQL? > > John > > > > > -----Original Message----- > > From: Nicoll, Iain (Calanais) > [SMTP:[EMAIL PROTECTED]] > > Sent: 06 September 2002 15:23 > > To: Multiple recipients of list ORACLE-L > > Subject: RE: Must Read for Every Developer > and DBA > > > > I thought that bind variables were faster but you > always have to ensure > > that > > if you're accessing by data which may be heavily > skewed and histograms > > would > > usually help you may not want to use bind > variables as they will disable > > the > > use of histograms. > > > > In saying that it doesn't look as though that > would be the case here. > > > > Iain Nicoll > > > > -----Original Message----- > > Sent: Friday, September 06, 2002 2:33 PM > > To: Multiple recipients of list ORACLE-L > > > > > > Hello Vikas, > > > > As You said We should always make use of bind > variables as it executes > > faster as compare to the statements where we do > not > > make use of bind variables. > > > > Q1) Can you please take a more specific example as > how a statement can be > > altered to make use of bind variable. > > > > Q2) I made use of SELECT SQL_TEXT FROM V$SQLAREA > WHERE ROWNUM < 5 to get > > few > > samples for you > > > > These are as follows > > > > UPDATE CNST_QUEUE SET PROCESS = -1 > ,USER_ID ='A101675' > > ,DATE_QUEUED = sysdate WHERE AWB_PREFIX > > = '125' AND AWB_NUMBER = 67557405 AND > AWB_SUFFIX = ' ' > > AND > > PROCESS = 1 AND USER_ID = 'A101675' > > > > UPDATE CNST_QUEUE SET PROCESS = -1 > ,USER_ID = 'A101675' > > ,DATE_QUEUED = sysdate WHERE AWB_PREFIX > > = '125' AND AWB_NUMBER = 68221156 AND > AWB_SUFFIX = ' ' > > AND > > PROCESS = 1 AND USER_ID = 'A101675' > > > > UPDATE CNST_QUEUE SET PROCESS = -1 > ,USER_ID ='A105722' > > ,DATE_QUEUED = sysdate WHERE AWB_PREFIX > > = '125' AND AWB_NUMBER = 67557405 AND > AWB_SUFFIX = 'A ' > > AND > > PROCESS = 1 AND USER_ID = 'A105722' > > > > UPDATE CNST_QUEUE SET PROCESS = -1 > ,USER_ID = 'A105722' > > ,DATE_QUEUED = sysdate WHERE AWB_PREFIX = '125' > AND AWB_NUMBER = > > 67557416 AND AWB_SUFFIX = ' ' AND > PROCESS = 1 AND > > USER_ID > > = 'A105722 > > > > How can I Introduce bind variables in these > statements ? > > > > I may be sending a wrong SAMPLE as I feel I should > apply your remove > > constant function and then send few SQL statements > > > > Warm Regards, > > Om > > > > In your case -- you are NOT using bind variables. > > > > Taking your update statement here: > > > > UPDATE CNST_QUEUE SET PROCESS = -1 > ,USER_ID = 'A101675' > > ,DATE_QUEUED = sysdate WHERE AWB_PREFIX > > = '125' AND AWB_NUMBER = 67557405 AND > AWB_SUFFIX = ' ' > > AND > > PROCESS = 1 AND USER_ID = 'A101675' > > > > that SHOULD BE recoded in the application to > become : > > > > update cnst_queue set process = :b1, user_id = > :b2, date_queued = sysdate, > > where awb_prefix = :b3 > > and awb_number = :b4 > > and awb_suffix = :b5 > > and awb_process = :b6 > > and user_id = :b7; > > > > and bind in those values before you execute this > statement. There are ways > > in which it could be done and vary from language > to language and > > environment > > to environment but they ALL support it. You MUST > do this. In this > > case,the > > first time you execute this statement you need to > parse this statement > > (HARD > > PARSING) and once the execution plan gets into the > SHARED POOL > > (V$libraryCache) the other users can use this to > great effect. They would > > not reparse this statement again and again and but > does do the soft > > parsing > > of it. So One Parse may lead to MANY executions > instead of 1 Parsing <-> 1 > > Execution. > > > > At least 90% of your database execution time is > spent PARSING and > > OPTIMIZING > === message truncated === __________________________________________________ Do You Yahoo!? Yahoo! Finance - Get real-time stock quotes http://finance.yahoo.com -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: mkb INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- 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). -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Toepke, Kevin M INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- 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).