2013-10-13 69 views
0

我使用Navicat的功能生成器生成一個新的簡單的功能:錯誤使用了PostGIS st_dimension()函數

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; 

當我試圖挽救它得到這個錯誤:

ERROR :「SELECT」處或附近的語法錯誤 LINE2:RETURNs「pg_catalog」。「int4」AS $ BODY $ SELECT ... ^

我試圖做與功能st_dimension(編譯一樣),它具有與參數nature.geometry,但我得到的錯誤:

程序執行失敗 錯誤:缺少FROM子句爲表「NATURA」條目 LINE 1:。... 「公共」, 「st_dimension(」 「公」 「幾何 」 「」「)」(natura.geo ... ^

什麼,我做錯了上述功能?

回答

1

語言應該是'sql'而不是'plpgsql'。目前還不清楚爲什麼你有一個IN參數沒有被函數使用。此外,如果nature.geometry具有維度的混合,則它返回隨機行的結果,因爲沒有ORDER BY子句。

+0

這樣做的技巧(將語言更改爲SQL)。我知道關於ORDER BY的事實。我只是想讓它現在工作。沒什麼特別的! – Blenikos