Database postgresql函数创建时出现语法错误
我正在编写一个postgresql函数,但似乎找不到错误所在。Postgresql的版本为9.4。Database postgresql函数创建时出现语法错误,database,postgresql,plpgsql,Database,Postgresql,Plpgsql,我正在编写一个postgresql函数,但似乎找不到错误所在。Postgresql的版本为9.4。 功能如下: CREATE FUNCTION custom_function1() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE base_val integer; BEGIN base_val := (EXTRACT(YEAR FROM now())::integer * 10000000000);
功能如下:
CREATE FUNCTION custom_function1()
RETURNS trigger
LANGUAGE plpgsql
AS
$$
DECLARE base_val integer;
BEGIN
base_val := (EXTRACT(YEAR FROM now())::integer * 10000000000);
IF (currval('custom_sequence') < base_val) THEN
setval('custom_sequence', base_val);
END IF;
NEW.id := custom_function2();
RETURN NEW;
END;
$$;
创建自定义函数\u function1()
返回触发器
语言plpgsql
作为
$$
声明基值为整数;
开始
基本值:=(提取(从现在开始的年份())::整数*1000000000);
如果(currval('custom_sequence')
我的自定义_序列的格式为YYYY0000000000(例如20150000000000)
因此,它基本上(应该)做的是检查基本值(当前年份的最小值)是否大于当前值(当前自定义序列值),并更新自定义序列值。然后,它将为使用函数custom_function2生成的序列返回一个新值(该函数的格式非常简单)
当我尝试执行此操作时,它会告诉我:在“setval”处或附近出现语法错误
我对postgresql和编写函数都很陌生,所以我可能没有看到明显的错误。如果有人能帮助我,我们将不胜感激。该错误与文档中的解释有关: 40.5.2执行命令时没有结果
[……] 有时计算表达式或选择查询很有用,但 放弃结果,例如在调用具有 副作用,但没有有用的结果值。要在PL/pgSQL中执行此操作,请使用 执行语句: 执行查询 你应该写:
PERFORM setval('custom_sequence', base_val);
非常感谢你!谢谢你的解释链接