Assign_vertex_id功能(Assign_vertex_id function)

2019-09-22 06:04发布

当我执行下面的查询;

SELECT Assign_vertex_id('ways', 0.00001, 'the_geom', 'gid')

我收到以下错误;

NOTICE:  CREATE TABLE will create implicit sequence "vertices_tmp_id_seq" for serial column "vertices_tmp.id"
    CONTEXT:  SQL statement "CREATE TABLE vertices_tmp (id serial)"
    PL/pgSQL function "assign_vertex_id" line 15 at EXECUTE statement
    ERROR:  query string argument of EXECUTE is null
    CONTEXT:  PL/pgSQL function "assign_vertex_id" line 32 at EXECUTE statement

    ********** Error **********

    ERROR: query string argument of EXECUTE is null
    SQL state: 22004
    Context: PL/pgSQL function "assign_vertex_id" line 32 at EXECUTE statement

任何想法,为什么会出现这种情况?

Answer 1:

我知道这是一个古老的职位,但我想提供一个答案,也许这将帮助别人。

我发现这个文章,解决我的问题。

更新:

所以,我复制从这里文章的相关信息:

下面的代码的第一行是错误的:

FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| quote_ident(geom_table)||''';' LOOP
srid := _r.srid;
    END LOOP;

并应修改为:

FOR _r IN EXECUTE 'SELECT srid FROM geometry_columns WHERE f_table_name='''|| geom_table||''';' LOOP
srid := _r.srid;
    END LOOP;

这是因为“quote_ident(表名)”是错误的,它增加了一个额外的'周围的表名。



Answer 2:

也许你应该尝试:

SELECT assign_vertex_id("ways", 0.00001, "the_geom", "gid");

灵性



文章来源: Assign_vertex_id function