Re: Transaction on start of session ?

From: mlw <markw(at)mohawksoft(dot)com>
To: Paul <magamos(at)mail(dot)ru>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Transaction on start of session ?
Date: 2002-03-13 23:01:12
Message-ID: 3C8FDA38.DD275EC7@mohawksoft.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

It is true that postgresql does not have an easy way to return multiple rows
from a function, but it can be done with some typing.

(select MyStartfn(...), Myfn('name1') as name1, Myfn('name2') as name2) as
ttable

The idea is that you write a function "MyStartfbn(...)" which does the
operation. The function "Myfn(...)" accepts a field name, or some kind of
marker, to return the rows.

There are a number of strategies on how to do this, but you kind of need to
understand how to write PostgreSQL functions.

Paul wrote:
>
> The problem:
>
> I want to create a function that returns the result as many tuples (many
> rows of records). Unlike MSSQL, Oracle, etc PostgreSQL couldnt do it. So, I
> decided the only way to do it is to return result data into temporary table.
>
> But:
>
> - If I create table into stored procedure, I got the error from the second
> call of this procedure inside the same session. It's because Plpgsql makes
> precompilation of the query at the first call of this procedure inside the
> session. And when I delete the result temporary table that this procedure
> returned me and call this procedure second time, the query with "INSERT"
> (that is already precompiled) uses the table that was already deleted, but
> not the table that was just created. :(
>
> - I couldnt check is some temporary table exist inside the session. :(
>
> The way I could decide this problem is:
>
> - At each start of session some stored procedure must run (as some kind of
> transaction). And in this stored procedure I want to create all temporary
> tables that I want to use to store resulting rows from other stored
> procedures. And I shall not need to create any temporary table inside these
> procedures.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Copeland 2002-03-13 23:07:32 Bitmap indexes?
Previous Message Mikheev, Vadim 2002-03-13 22:34:41 Re: Bug #613: Sequence values fall back to previously chec