Interesante.
lo que puedes probar es haciendo un cursor explicito. algo como
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION trastea(text) RETURNS INTEGER AS
$BODY$
/*para hacer pruebas*/
DECLARE
e INTEGER;
SQL text;
CUR cursor;
BEGIN
SQL := 'SELECT ST_SRID('|| $1||'.geom) FROM work.'|| $1||' WHERE gid = 1';
OPEN cur FOR EXECUTE SQL;
loop
fetch cur INTO e; --Esta variable se sobvreescribe en cada ciclo.
EXIT WHEN NOT FOUND;
RETURN e;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION trastea(text) OWNER TO postgres;
pero solo funciona si tienes un solo registro en el retorno de la conssulta.
no lo he probado