Обсуждение: Executing Anonymous Blocks
hi, I want to know is there any way to execute an anonymous PL/pgSQL block in PostgreSQL. Thanx -- Regards Imad
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".
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
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