有人可以告诉我这段代码有什么问题吗?我在选择category_ID附近收到语法错误; 我正在使用最新版本的nodejs中是mysql
注意-如果我删除了输出参数,则输入代码正常工作。
节点服务器代码-
app.post('/api/createcategory', function (req, res) {
name = req.body.categoryName, icon = req.body.categoryIcon;
let createcategory = `CALL spAddCategory(?, ?, @category_id); SELECT @category_id;`
db.query(createcategory, [name, icon], (err, result) => {
if(err) {throw err};
console.log(result);
})
res.send('Category Created')
})
SQL查询-
CREATE PROCEDURE spAddCategory ( IN category_name varchar(255), IN category_icon varchar(255), OUT category_id int )
BEGIN
INSERT INTO categories ( categoryName, categoryIcon )
VALUES ( category_name, category_icon );
SELECT categoryID INTO category_id FROM categories
WHERE categoryName = category_name;
END
答案 0 :(得分:1)
考虑代替将输出作为普通结果集来处理OUT
变量(主要在过程之间有用),
app.post('/api/createcategory', function (req, res) {
name = req.body.categoryName, icon = req.body.categoryIcon;
let createcategory = `CALL spAddCategory(?, ?);`
db.query(createcategory, [name, icon], (err, result) => {
if(err) {throw err};
console.log(result[0]);
})
res.send('Category Created')
})
然后该过程返回包含最后插入的id的结果集(假设categoryID
是AUTO_INCREMENT
id):
CREATE PROCEDURE spAddCategory (
category_name varchar(255),
category_icon varchar(255)
)
BEGIN
INSERT INTO categories ( categoryName, categoryIcon )
VALUES ( category_name, category_icon );
SELECT last_insert_id();
END
请注意,您最终可能会获得多个同名类别。