wie gesagt, Du scheinst EXECUTE noch nicht gefunden zu haben:
[code]
postgres=# create or replace function create_table(colname text) returns text as $$begin execute 'create table ludwigmller(id serial, ' || colname || ' text);'; return true; end$$language plpgsql;
CREATE FUNCTION
postgres=# \d ludwigmller
Did not find any relation named "ludwigmller".
postgres=# select * from create_table('bla');
create_table
--------------
true
(1 row)
postgres=# \d ludwigmller
Table "public.ludwigmller"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+-----------------------------------------
id | integer | | not null | nextval('ludwigmller_id_seq'::regclass)
bla | text | | |
postgres=#
[/code]
Achtung: language ist plpgsql, nicht sql.