我已经在SQL SERVER中手动创建了函数,然后使用Node.js中的Sequelize库调用了这些函数。
示例:
let query = "select * from getSomeData(:StartDate,:EndDate)";
let SeqOptions = {
replacements: {
StartDate : '2015-05-03',
EndDate : '2015-05-05',
},
type: sequelize.QueryTypes.SELECT
};
let result = await sequelize.query(query , SeqOptions );
但是我已经在SQL中手动定义了getSomeData
函数。没有办法在Sequelize中声明函数定义吗?这样,每当我重新启动服务器并重置数据库时,都不必在数据库中运行脚本?
You can try this it works for me:
const procedureDropIfExists = `DROP FUNCTION IF EXISTS getSomeData;`
sequelize.query(procedureDropIfExists, {
type: sequelize.QueryTypes.raw
});
const procedureQuery = `CREATE FUNCTION getSomeData(arg1 INT, arg2 INT) RETURNS int(11)`
+ '\tBEGIN'
+ `\tDECLARE hold_result INT;`
+ `\tselect dummycolvalue INTO var_value from tableName whereClause;`
+ `\tRETURN hold_result;`
+ 'END;';
sequelize.query(procedureQuery, {
type: sequelize.QueryTypes.raw
});
let me know if it works for you.