May you have the link to 'DO'-discussion to take a look on it? I was trying
to google for something like that, but word 'DO' is too generic to bring
useful results :(

In my particular case I'm more interested in an easy way to create complex
SELECTs that require usage of variables in the one-time through-away
scripts (some-time during experiments for implementation of functions, to
see immediate results of the intermediate code). The easiest way would be
MsSQL-like when declaring a variable outside of SP actually makes it
visible globally in current session. In such case I do not need 'DO' at all
and this is simple. Probably PostgreSQL has another way to make that thing
simple.



On Fri, Aug 12, 2016 at 1:19 AM, Merlin Moncure <mmonc...@gmail.com> wrote:

> On Mon, Aug 8, 2016 at 7:25 PM, Xtra Coder <xtraco...@gmail.com> wrote:
> > Hi,
> >
> > I'm just curious about the reasons of the design of 'DO' statement so
> that
> > it is not able to return result of the SELECT in its body.
> >
> > References:
> >     https://www.postgresql.org/docs/current/static/sql-do.html
> >
> > http://stackoverflow.com/questions/14652477/how-to-
> perform-a-select-query-in-a-do-block
> >
> > With some former experience with MsSQL server, where 'complex' script is
> > executed easily and straightforward without any 'wrapping', like this
> > dummy-one ...
> >
> >     DECLARE @a int;
> >     DECLARE @b int;
> >     ...
> >     select @a + @b as "a+b"
> >
> > ... every time I need to execute some one-time-through-away complex code
> in
> > PostgreSQL which returns rowset I'm disappointed - this has to be wrapped
> > into normal 'temp' function which I have to delete all the time in
> current
> > session, thus making an anonymous 'DO' statement use-less in 95% of my
> > use-cases.
> >
> > So ... may someone know good reasons for such inconvenient design of 'DO'
> > statement?
>
> IIRC past discussion concluded DO statements should be allowed to
> return values.
>
> What you (or at least I-) really want though is stored procedures.  To
> me, this means the following:
>
> *) Ability to embed collection of statements in the database under a name
> *) Ability to invoke those statements via CALL <name>, which does not
> automatically create a transaction and a snapshot (unlike
> functions/DO)
>
> I used to think that we needed to pick a procedural language (for
> example, pl/pgsql) to leverage the various programming niceties of the
> database (such as variables and flow control).  Today I'm thinking it
> ought to be vanilla SQL for starters, with some judicious SQL
> extensions to be hashed out later.
>
> merlin
>

Reply via email to