2013-01-31 51 views
0

我想要返回基於表名主鍵的下一個值的函數功能:創建使用執行(PLPGSQL)

CREATE OR REPLACE FUNCTION next_pk (_table varchar) RETURNS INTEGER AS $$ 
    BEGIN 
     RETURN EXECUTE 'SELECT COALESCE (MAX (primary_key), 0) + 1 FROM ' || quote_ident (_table) || ' limit 1'; 
    END; 
$$ LANGUAGE plpgsql; 

select next_pk ('myTable'); 

但它提供了以下錯誤:

ERROR: type "execute" does not exist 
LINE 1: SELECT EXECUTE 'SELECT COALESCE (MAX (primary_key), 0) + 1 F... 

任何線索?謝謝。

+0

序列不支持回滾 – Caio

回答

1

你需要整型變量,而「執行到」:

CREATE OR REPLACE FUNCTION next_pk (_table varchar) RETURNS INTEGER AS $$ 
DECLARE 
    result integer;  
BEGIN 
    EXECUTE 
     'SELECT COALESCE (MAX (primary_key), 0) + 1 FROM ' || quote_ident (_table) 
     INTO result; 
    RETURN result; 
END; 
$$ LANGUAGE plpgsql; 

select next_pk ('myTable'); 
+0

謝謝,非常 – Caio

相關問題