Обсуждение: Executing Anonymous Blocks

Поиск
Список
Период
Сортировка

Executing Anonymous Blocks

От
imad
Дата:
hi,

I want to know is there any way to execute an anonymous PL/pgSQL block
in PostgreSQL.

Thanx


-- 

Regards
Imad


Re: Executing Anonymous Blocks

От
Alvaro Herrera
Дата:
On Mon, Mar 28, 2005 at 12:27:18PM +0500, imad wrote:

> I want to know is there any way to execute an anonymous PL/pgSQL block
> in PostgreSQL.

No, there isn't.

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".


Re: Executing Anonymous Blocks

От
Neil Conway
Дата:
Alvaro Herrera wrote:
> On Mon, Mar 28, 2005 at 12:27:18PM +0500, imad wrote:
>>I want to know is there any way to execute an anonymous PL/pgSQL block
>>in PostgreSQL.
> 
> No, there isn't.

It might be possible to implement at least some of this functionality 
entirely in the client. So:

BLOCK;
/* your pl/pgsql code here */
END BLOCK;

Could be transformed by the client app to:

CREATE FUNCTION anon_xxx() AS '/* your pl/pgsql code here'
RETURNS void LANGUAGE 'plpgsql';
SELECT anon_xxx();
DROP FUNCTION anon_xxx();

This would be pretty limited -- you couldn't get a return value from the 
anonymous block, for example -- but I can see it being useful in some 
situations.

-Neil


Re: Executing Anonymous Blocks

От
"Andrew Dunstan"
Дата:
Neil Conway said:
> Alvaro Herrera wrote:
>> On Mon, Mar 28, 2005 at 12:27:18PM +0500, imad wrote:
>>>I want to know is there any way to execute an anonymous PL/pgSQL block
>>>in PostgreSQL.
>>
>> No, there isn't.
>
> It might be possible to implement at least some of this functionality
> entirely in the client. So:
>
> BLOCK;
> /* your pl/pgsql code here */
> END BLOCK;
>
> Could be transformed by the client app to:
>
> CREATE FUNCTION anon_xxx() AS '/* your pl/pgsql code here'
> RETURNS void LANGUAGE 'plpgsql';
> SELECT anon_xxx();
> DROP FUNCTION anon_xxx();
>
> This would be pretty limited -- you couldn't get a return value from
> the  anonymous block, for example -- but I can see it being useful in
> some  situations.
>

I don't see that performing the same transformation at the SQL level would
be any harder. Then if we ever got SQL host variables we might have a good
way of using them ;-). Of course, another question is whether we should make
plpgsql special, or allow anonymous blocks in any supported language.

cheers

andrew