2016-06-29 25 views
1

我想調用傳遞參數的存儲過程,如下所示。但是,我知道我的語法已關閉,我沒有看到任何示例在文檔或單元測試中執行此操作。調用存儲過程sequalize傳遞參數

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

到底是什麼,你得到的錯誤?如果'appuser'的目的是一個字符串,語法對我來說很好。 –

+0

謝謝@SteffenLanger,我剛剛更新了問題 –

回答

3

我假設你正在使用PostgreSQL。

PostgreSQL調用過程的語法不同於MySQL或IBM Informix等其他DBMS。它不是CALL的過程,而是來自存儲過程的SELECT。可參考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); 
}); 
相關問題