使用postgis st_dimension()函数时出错

时间:2013-10-13 13:50:08

标签: sql postgresql postgis navicat

我正在使用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中的build in function st_dimension()进行相同操作,但是我得到了错误:

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

上述功能我做错了什么?

1 个答案:

答案 0 :(得分:1)

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