【发布时间】:2021-06-05 11:25:14
【问题描述】:
这段代码:
ALTER TABLE myschema.mytable add column geom geometry (point,4326);
CREATE INDEX mytable_idx on myschema.mytable using GIST(geom);
UPDATE myschema.mytable set geom = st_setsrid(st_point(mytable.long, mytable.lat), 4326);
这在更新单个表时可以正常工作。如何将其转换为动态 SQL 函数,以模式和表为参数?
【问题讨论】:
-
您正在寻找动态 SQL -
ALTER TABLE sch.tab尝试更改架构"sch"中的"tab"表,而不是将它们解析为函数的参数。你的函数需要两个字符串,所以你需要调用SELECT create_geom('myschema', 'mytable'); -
啊。想把它写下来让我接受你的回答吗? :)
-
我不知道如何正确编写动态SQL。我可能会尝试让函数接受
regclass,而不是两个字符串。 -
感谢您的帮助;让它工作:)
标签: postgresql plpgsql dynamic-sql