Con un ejemplo
Código SQL:
Ver originalpruebas=> CREATE TABLE tabla(id INTEGER);
CREATE TABLE
pruebas=> CREATE OR REPLACE FUNCTION insertar(INTEGER)
pruebas-> RETURNS text AS
pruebas-> $BODY$
pruebas$> DECLARE
pruebas$> i INTEGER;
pruebas$> stmnt text;
pruebas$> inser text;
pruebas$> BEGIN
pruebas$> stmnt = 'insert into tabla values(' || $1 || ')';
pruebas$> EXECUTE stmnt;
pruebas$> RETURN 'INSERTO';
pruebas$> END; $BODY$
pruebas-> LANGUAGE 'plpgsql' VOLATILE;
CREATE FUNCTION
pruebas=> SELECT *FROM tabla;
PRUEBAS
id
----
(0 filas)
pruebas=> SELECT insertar(500);
PRUEBAS
insertar
----------
INSERTO
(1 fila)
pruebas=> SELECT *FROM tabla;
PRUEBAS
id
-----
500
(1 fila)
pruebas=> CREATE OR REPLACE FUNCTION insertar1(text)
pruebas-> RETURNS text AS
pruebas-> $BODY$
pruebas$> BEGIN
pruebas$> EXECUTE $1;
pruebas$> RETURN 'INSERTO';
pruebas$> END; $BODY$
pruebas-> LANGUAGE 'plpgsql' VOLATILE;
CREATE FUNCTION
pruebas=> SELECT insertar1('INSERT INTO tabla VALUES(800)');
PRUEBAS
insertar1
-----------
INSERTO
(1 fila)
pruebas=> SELECT *FROM tabla;
PRUEBAS
id
-----
500
800
(2 filas)
saludos