我正在尝试使用postgres
在knex
中创建一个函数,但是会出现此错误:
错误:“ BEGIN”处或附近的语法错误 在Connection.parseE(E:\ apps \ node \ api_moto_na_veia \ node_modules \ pg \ lib \ connection.js:553:11) 在Connection.parseMessage(E:\ apps \ node \ 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_visible.js:264:11) 在Socket.Readable.push(_stream_visible.js:219:10) 在TCP.onStreamRead [阅读时](internal / 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
`);
};
答案 0 :(得分:1)
缺少分号。如果语句以END IF结尾;
答案 1 :(得分:1)
正如@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;