[英]Syntax error in CREATE FUNCTION statement in psql using knex.js
我正在尝试使用knex
在postgres
创建一个函数,但是会出现此错误:
错误:Connection.parseMessage(E:\\ apps \\ node \\)上Connection.parseE(E:\\ apps \\ node \\ api_moto_na_veia \\ node_modules \\ pg \\ lib \\ connection.js:553:11)处“ BEGIN”处或附近的语法错误api_moto_na_veia \\ node_modules \\ pg \\ lib \\ connection.js:378:19)。 (E:\\ apps \\ node \\ api_moto_na_veia \\ node_modules \\ pg \\ lib \\ connection.js:119:22)在Socket.emit(events.js:182:13)在addChunk(_stream_visible.js:283:12)在可读AddChunk (_stream_read.js:264:11)在Socket.Readable.push(_stream_visible.js:219:10)在TCP.onStreamRead [按阅读](内部/stream_base_commons.js:94:17)
我不知道语法有什么问题。
exports.up = function(knex, Promise) {
return knex.raw(`
CREATE FUNCTION maxV(val1 numeric, val2 numeric) RETURNS numeric AS
BEGIN
IF (val1 > val2) THEN
RETURN val1;
ELSE
RETURN val2;
END IF
RETURN NULL;
END
`);
};
缺少分号。 如果语句以END IF结尾;
正如@Belayer指出的那样,您需要分号,并且缺少$$
包装函数定义和语言规范的$$
:
CREATE FUNCTION maxV(val1 numeric, val2 numeric) RETURNS numeric AS $$
BEGIN
IF (val1 > val2) THEN
RETURN val1;
ELSE
RETURN val2;
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.