Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> c.d.o.server -> Re: newbie queston: why would anyone use Oracle?

Re: newbie queston: why would anyone use Oracle?

From: William Robertson <>
Date: 23 Sep 2005 16:37:08 -0700
Message-ID: <>

PJ6 wrote:
> "William Robertson" <> wrote in message
> > The idea that PL/SQL is for "introducing loops and other procedural
> > badness directly into my queries" or that it is "simple", or that you
> > shouldn't use various arbitrary features on the grounds that "they are
> > probably not simple deviations from the relational model" is absolutely
> > ridiculous and an insult to full-time PL/SQL developers. That includes
> > me by the way. It is as simple or otherwise as you choose to make it.
> > PL/SQL has nothing whatever to do with introducing loops into queries.
> > That is what XML is for. Jeez.
> You shouldn't take it personally, I already admited that I know very little
> about what we're discussing. Certainly it was not my intention to insult
> anybody.
> "PL/SQL has nothing whatever to do with introducing loops into queries."
> Then why did someone call PL/SQL "procedural"? To me "procedural" means GL3.
> GL3 structures and concepts, when possible, need to be avoided in a
> set-based language. At least that's what I was taught when I learned theory.
> Maybe I just misinterpreted someone else's comment.
> If not, I do acknowledge that there is still a need for GL3 features in
> relational languages. SQL Server 2005 (and probably Oracle already) finally
> provided a way of expressing recursive joins. But I hear the performance is
> poor, so in the land of MS, transitive closure will still require an IES.
> Paul

PL/SQL has nothing to do with introducing loops into queries, but can sometimes be useful for introducing queries into loops. However we generally prefer to avoid loops altogether.

I have no idea what GL3, recursive joins or transitive closure are, but I do work on systems where processing is required.

For example, we need to load 25 tables from OS files, analyze the tables, and perform a summarizing process that populates one table. Each of those staging tables consists of an external table and a materialized view, so we call a "refresh" procedure in a loop. This also logs its progress as it goes along, via other procedure calls. The whole staging procedure is optionally called from the "summarize switch data" procedure.

Is this a simple deviation from the relational model? Received on Fri Sep 23 2005 - 18:37:08 CDT

Original text of this message