我正在开发一个使用node.js作为服务器部分的Web应用程序,并且我正在尝试使用RESTED(mozilla的扩展,如postman)发出发布请求来放置数据。当我尝试执行存储过程时,出现以下错误:
Procedure or function insert_azienda has too many arguments specified.
这是我的存储过程(Sql Server):
CREATE OR ALTER PROCEDURE insert_azienda
@nome_azienda nvarchar(50),
@id_azienda int,
@tipo nvarchar(50)
AS
BEGIN
INSERT INTO [PortaleVettore DB].[dbo].Azienda
([nome_azienda],
[id_azienda],
[tipo])
VALUES (@nome_azienda,@id_azienda,@tipo)
END
这是我的 node.js 代码:
var express = require('express');
var router = express.Router();
var sql = require("mssql");
var conn = require("../connection/connect")();
var routes = function ()
{
router.route('/')
.post(function (req, res) {
conn.connect().then(function () {
var transaction = new sql.Transaction(conn);
transaction.begin().then(function () {
var request = new sql.Request(transaction);
request.input("nome_azienda", sql.NVarChar(50), req.body.nome_azienda)
request.input("id_azienda", sql.Int, req.body.id_azienda)
request.input("tipo", sql.NVarChar(50), req.body.tipo)
console.log("-----------")
console.log(req.body.nome_azienda)
console.log(req.body.id_azienda)
console.log(req.body.tipo)
console.log("-----------")
request.execute("insert_azienda").then(function () {
transaction.commit().then(function (recordSet) {
conn.close();
res.status(200).send(req.body);
}).catch(function (err) {
conn.close();
res.status(400).send("Error while inserting data 4");
});
}).catch(function (err) {
conn.close();
console.log(err);
// console.log(request);
res.status(400).send("Error while inserting data 3");
});
}).catch(function (err) {
conn.close();
res.status(400).send("Error while inserting data 2");
});
}).catch(function (err) {
conn.close();
res.status(400).send("Error while inserting data 1");
});
});
return router;
};
module.exports = routes;
最佳答案
这是一个计数问题。 错误消息告诉您 SQL 过程需要多个参数,而调用程序给出了不同数量的参数。
解决办法:自己拉着自己的手对比2个参数列表,逐行检查,检查两边的参数名称(相差1个字符且不匹配)。
关于node.js - 过程或函数 insert_azienda 指定了太多参数 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58814635/