0

我正在使用 navicat 函数生成器来构建一个新的简单函数:

SELECT st_dimension(geometry)
FROM nature

我想使用表性质和包含几何作为多面体的列几何来获取 POSTGIS st_dimension 函数的结果。

返回类型模式是 pg_catalog,返回类型是 int4

这是 SQL 预览:

  CREATE FUNCTION "public"."NewProc"(IN  "public"."geometry")
  RETURNS "pg_catalog"."int4" AS $BODY$SELECT st_dimension(geometry)
  FROM nature$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

当我试图保存它时得到这个错误:

错误:“SELECT”LINE2 处或附近的语法错误:返回“pg_catalog”。“int4”AS $BODY$SELECT... ^

我尝试使用参数 nature.geometry 对其具有的内置函数 st_dimension() 执行相同的操作,但出现错误:

程序执行失败错误:缺少表“natura”第 1 行的 FROM 子句条目:...“public”。“st_dimension(”“public”“。”“geometry”)”(natura.geo ...

我对上述功能做错了什么?

4

1 回答 1

1

语言应该'sql',不是'plpgsql'。目前尚不清楚为什么您有一个IN函数未使用的参数。此外,如果nature.geometry有混合维度,那么它会返回随机行的结果,因为没有ORDER BY子句。

于 2013-10-13T23:24:56.253 回答