node.js - 过程或函数 insert_azienda 指定了太多参数 (Node.js)

标签 node.js sql-server stored-procedures

我正在开发一个使用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/

相关文章:

node.js - 扩展 Node.js 应用程序 - 哪个提供商?

javascript - 有什么方法可以查看 gulp watch 处理了哪些文件?

mysql - SQL 语句语法差异

sql - 如何在重新定义依赖对象后刷新 T-SQL 用户定义函数的定义?

sql-server - SQL Server查询执行计划在已使用的索引上显示错误 "actual row count"并且性能非常慢

mysql - 常规调用存储过程不会返回记录

java - 如何将用户定义的类型作为输入传递给存储过程?

node.js - 如何更改 pm2 Web 界面的 IP 和端口?

javascript - 通过 javascript 对象属性值过滤 JSON 响应

sql-server - 在 SQL SERVER 中获取 XML 结构