【问题标题】:Calling stored procedure in sequalize passing in a parameter在sequelize中调用存储过程传入​​参数
【发布时间】:2016-06-30 14:23:59
【问题描述】:

我正在尝试调用传入参数的存储过程,如下所示。但是,我知道我的语法已关闭,并且在文档或单元测试中都没有看到任何这样做的示例。

model.sequelize.query('CALL truncate_tables(\'appuser\');')
  .then(function (response) {
    done();
  }).error(function (err) {
    done(err);
});

建议?

我开始查看此链接。 Calling stored procedures in Sequelize.js

附加信息:

这是我看到的错误

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

这里是sp

CREATE OR REPLACE FUNCTION truncate_tables(username character varying)
RETURNS void AS
$BODY$
DECLARE
    statements CURSOR FOR
    SELECT tablename FROM pg_tables
    WHERE tableowner = username AND schemaname = 'public';
BEGIN
FOR stmt IN statements LOOP
    EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
END;
$BODY$

【问题讨论】:

  • 您得到的错误究竟是什么?如果appuser 是一个字符串,那么语法对我来说很好。
  • 谢谢@SteffenLanger,我刚刚更新了问题

标签: node.js stored-procedures sequelize.js


【解决方案1】:

我想你正在使用 PostgreSQL。

PostgreSQL 调用过程的语法不同于 MySQL 或 IBM Informix 等其他 DBMS。它不是CALL 过程,而是来自存储过程的SELECTs。可以在https://www.postgresql.org/message-id/41F009EA.6050401%40us.michelin.com 找到参考。

也许这段代码会起作用:

model.sequelize.query('SELECT truncate_tables(\'appuser\');')
  .then(function (response) {
    done();
  }).error(function (err) {
    done(err);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多