Would extproc_perl fit well enough, though, until 10g is here?

On Fri, 21 Nov 2003, Mladen Gogala wrote:

> PL/SQL is the fastest thing of them all when it comes to executing 
> SQL commands, but there are things which simply aren't practical 
> in 9.2 PL/SQL. Regular expression processing is one of those things.
> Fortunately, you can mix the two. Without DBI, perl scripts simply
> woudn't be very useful. Of course, there are things that are faster
> then even the fastest perl script. Lexer written in C is one of them
> and you don't need much work to write one, either, but using OCI is
> not easy. OCI is a library written to confuse the enemy, not to help
> developer. Using plain and simple regex or PCRE within a C program
> is the same thing as above, but slightly more complicated then a lexer.
> For the specific task of manipulating patterns and resolving regular
> expressions, I use perl almost exclusively because I find it an optimal 
> tradeoff between ease of use and performance. If performance is a 
> paramount, as in real time application processing, then you'll have to 
> resort to C and, possibly, write an external procedure and, thus,
> enabling oracle to use C regex calls or even pcre. I was toying with the 
> idea of enabling oracle to use PCRE but I gave up when I read that 10g 
> will have that included.
> 
> On 11/21/2003 11:59:31 AM, Guang Mei wrote:
> > Perl is a good tool for text processing. But our program is already written
> > in pl/sql long time ago and there are intensive db calls in this pl/sql
> > program. (text processing is only part of it). So I can not change that.
> > 
> > BTW I did a comparison study a while ago for some of our pl/sql packages
> > (specifically for our application). When there are lots of db calls (select,
> > insert, update and delete), pl/sql package is faster than correponding perl
> > program (I made sure sqls are prepared once and used bind variables in perl.
> > All code were executed on the unix server, no other programs were running,
> > etc). That's why we stick to pl/sql because our app need the performance.
> > Others may have different results, it all depends on what the code does.
> > 
> > Guang
> > 
> > -----Original Message-----
> > Mladen Gogala
> > Sent: Thursday, November 20, 2003 11:14 PM
> > To: Multiple recipients of list ORACLE-L
> > 
> > 
> > I don't know about PL/SQL but here is how I would get separate words from a
> > big string:
> > 
> > #!/usr/bin/perl -w
> > use strict;
> > my (@ARR);
> > while (<>) {
> >     chomp;
> >     @ARR = split(/[^0-9a-zA-Z_\.,<>]/);
> >     foreach (@ARR) {
> >         print "$_\n";
> >     }
> > }
> > 
> > There is something called DBI and it can be used to insert separated words
> > into the database, instead
> > of printing them. The bottom line is that perl is an excellent tool for
> > parsing strings and  all sorts of string
> > manipulation.
> > 
> > On 2003.11.20 22:39, Guang Mei wrote:
> > > Hi:
> > >
> > > In my pl/sql program, I want to process each "word" in a string. The
> > > string is selected from a varchar2(300) column. The delimit that separates
> > > the words is not necessary space character. The definition of the delimit
> > > in this program is set as
> > >
> > > 1. Any character that is NOT AlphaNumerical (0-9, A-Z,a-z)
> > > and
> > > 2. the character is not one of these:  '-.,/<*>_'
> > >
> > > Now my program is basically checking each character, find the delimit, and
> > > rebuild each word. After that I process each "word". The code looks like
> > > this:
> > >
> > > -------
> > > str :=  "This will be a long string with length upto 300 characters, it
> > > may contain some invisible characters';
> > > len := length(str)+1;
> > >   for i in 1..len loop
> > >     ch := substr(str,i,1);
> > >     if (not strings.isAlnum(ch) and instr('-.,/<*>_', ch)<1)  then
> > >       if word is not null then
> > >         -- do some processing to variable word !
> > >         word := null;    -- reset it
> > >       end if;
> > >     else
> > >       word := word || ch;   -- concat ch to word
> > >     end if;
> > >   end loop;
> > >
> > > -------
> > >
> > > I think It's taking too long because it loops through each characters. I
> > > hope I could find a way to speed it up. I don't have experiience in
> > > owa_pattern, but I thought there might be a way to do it here:
> > >
> > > ----
> > > str :=  "This will be a long string with length upto 300 characters, it
> > > may contain some invisible characters';
> > > newstr := str;
> > > pos := 1;
> > > while pos != 0 loop
> > >     pos := owa_pattern.amatch(newstr, 1, '\W');    -- how can I mask out
> > > these  '-.,/<*>_'  ???
> > >     word := substr(newstr, 1, pos-1);
> > >     -- do some processing to variable word !
> > >     if pos != 0 then
> > >       newstr := substr(newstr, pos+1);
> > >     end if;
> > > end loop;
> > > ------
> > >
> > > My simple tests showed that owa_pattern call is much slower than direct
> > > string manupilation. But I would like to try it in this case if I could
> > > easily get the "wrods" from the string. Any suggestions?
> > >
> > > TIA.
> > >
> > > Guang
> > >
> > >
> > > --
> > > Please see the official ORACLE-L FAQ: http://www.orafaq.net
> > > --
> > > Author: Guang Mei
> > >   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).
> > >
> > 
> > --
> > Mladen Gogala
> > Oracle DBA
> > --
> > Please see the official ORACLE-L FAQ: http://www.orafaq.net
> > --
> > Author: Mladen Gogala
> >   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).
> > 
> > -- 
> > Please see the official ORACLE-L FAQ: http://www.orafaq.net
> > -- 
> > Author: Guang Mei
> >   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).
> > 
> 
> Mladen Gogala
> Oracle DBA
> 
> 
> 
> Note:
> This message is for the named person's use only.  It may contain confidential, 
> proprietary or legally privileged information.  No confidentiality or privilege is 
> waived or lost by any mistransmission.  If you receive this message in error, please 
> immediately delete it and all copies of it from your system, destroy any hard copies 
> of it and notify the sender.  You must not, directly or indirectly, use, disclose, 
> distribute, print, or copy any part of this message if you are not the intended 
> recipient. Wang Trading LLC and any of its subsidiaries each reserve the right to 
> monitor all e-mail communications through its networks.
> Any views expressed in this message are those of the individual sender, except where 
> the message states otherwise and the sender is authorized to state them to be the 
> views of any such entity.
> 
> 

-- 
========================================================================
   Daniel Hanks - Systems/Database Administrator
   About Inc., Web Services Division
========================================================================
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Daniel Hanks
  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