prepared statement already exists
Hi! In a function to insert rows into a table, I keep
getting ERROR: prepared statement "updateplan" already
exists. If any ideas; thanks.
CREATE OR REPLACE FUNCTION testPreparedStatement()
RETURNS SETOF FLOAT AS $$
DECLARE
tryint1 int4:=1 ;
tryint2 int4:=2 ;
BEGIN
PREPARE updatePlan ( int4, int4 ) AS INSERT INTO
testtable VALUES ( $1, $2 );
EXECUTE updatePlan ( tryint1, tryint2 ) ;
RETURN NEXT tryint1;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
On Sun, Aug 13, 2006 at 10:48:37AM -0700, Jim Bryan wrote:
Hi! In a function to insert rows into a table, I keep
getting ERROR: prepared statement "updateplan" already
exists. If any ideas; thanks.
As the error says, you already have a prepared statement named
"updateplan". To reuse that name you'll need to DEALLOCATE it
first. However, then you'll get the following error:
test=> SELECT testPreparedStatement();
ERROR: function updateplan(integer, integer) does not exist
That's because the PL/pgSQL command EXECUTE is different than the
SQL command EXECUTE:
You don't need to use prepared statements in PL/pgSQL functions
because the language automatically prepares and caches query plans.
Just do the INSERT directly.
--
Michael Fuhr