Hi Listers, I want to use prepared statement in a function. Here is my code:
create or replace function generate_data ( integer, integer ) returns integer as $BODY$ declare p_count alias for $1; p_max_value_id1 alias for $2; v_max_value_id1 integer ; v_id1 int; v_id2 int; v_filler varchar(200) := repeat('BIGSTRING', 3); begin v_id1:= round( (random()* v_max_value_id1)::bigint,0); v_id2:= round( (random()* v_max_value_id1)::bigint,0); prepare mystmt( int, int, varchar) as insert into part values ($1,$2,$3); execute mystmt(v_id1, v_id2, v_filler ); deallocate mystmt; end; $BODY$ language plpgsql ; Definition of table part is : CREATE TABLE part ( id1 int not null, id2 int not null, filler varchar(200) ); When I try to call my function I am getting the following errors : postgres=# select * from gen (10, 10 ); ERROR: function mystmt(integer, integer, character varying) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts. CONTEXT: SQL statement "SELECT mystmt( $1 , $2 , $3 )" PL/pgSQL function "gen" line 12 at execute statement How to solve my problem ? Is it possible at all to call prepared statement inside a function at all? Regards. MILEN ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq