我尝试调用传入参数的存储过程,如下所示。但是,我知道我的语法已关闭,并且我在文档或单元测试中都没有看到任何这样的示例。
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$
答案 0 :(得分:4)
我想你正在使用PostgreSQL。
PostgreSQL使用与MySQL或IBM Informix等其他DBMS不同的语法调用过程。它不是!important
过程,而是来自存储过程的CALL
。可以在https://www.postgresql.org/message-id/41F009EA.6050401%40us.michelin.com找到参考。
也许这段代码可以起作用:
SELECT