簡體   English   中英

使用knex.js的psql中的CREATE FUNCTION語句中的語法錯誤

[英]Syntax error in CREATE FUNCTION statement in psql using knex.js

我正在嘗試使用knexpostgres創建一個函數,但是會出現此錯誤:

錯誤: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM