使用execute创建一个函数(plpgsql)

时间:2013-01-31 23:12:30

标签: function postgresql select primary-key execute

我想创建一个函数,根据表名返回主键的下一个值:

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...

任何线索?感谢。

1 个答案:

答案 0 :(得分: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');