简体   繁体   English

从sequelize.query()函数初始化存储过程/函数

[英]Initialising stored procedure/function from sequelize.query() function

Here is my stored procedure 这是我的存储过程

CREATE OR REPLACE FUNCTION GetAllEmployee()
RETURNS setof "Employees" AS
$BODY$
BEGIN
RETURN QUERY
select * from "Employees";
END;
$BODY$
LANGUAGE plpgsql;

And I am trying to call it from my route like this 我试图从我的路线上这样称呼它

    sequelize.sync().then(function() {

    app.get("/sp", (req, res) => {
        try {
            sequelize.query("GetAllEmployee()").then(function(data) {
                console.log(data);
            });

        } catch (error) {
            console.log(error);
        }

    });

});

But I keep getting this error message 但我不断收到此错误消息

Unhandled rejection SequelizeDatabaseError: syntax error at or near    "GetAllEmployee"

You need to add 'CALL' before the SP name. 您需要在SP名称之前添加“ CALL”。

Also you probably forgot to add an OUT parameter in your SP. 您也可能忘记在SP中添加OUT参数。

here's a demo code: 这是一个演示代码:

 sequelize.query('SET @outputData = null; CALL stored_procedure (:someInputData, @outputData); SELECT @outputData;', { replacements: { someInputData: 'Send Your Data Here', }, type: sequelize.QueryTypes.RAW, }) .spread(response => console.log(response, 'response')) .error((error) => { console.log(error, 'errored'); }); 

Note: add 'multipleStatements: true' to your sequelize config while creating instance, like so: 注意:在创建实例时,在您的sequelize配置中添加“ multipleStatements:true”,如下所示:

 const sequelize = new Sequelize(config.database.dbName, config.database.username, config.database.password, { host: config.database.host, dialect: config.database.dialect, logging: false, dialectOptions: { multipleStatements: true, }, }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM