简体   繁体   English

添加多个输入以查询 MS SQL 使用“node-mssql”的服务器实例 npm package

[英]Adding multiple inputs to query MS SQL Server instance using 'node-mssql' npm package

I would like to query MS SQL Server instance to serve a very simple POST request.我想查询 MS SQL 服务器实例来服务一个非常简单的POST请求。 I am using nodejs + express.我正在使用 nodejs + express。 The following code (async version) considers only first input types only and therefore returns error -以下代码(异步版本)仅考虑第一个input类型,因此返回错误 -

  let pool = await sql.connect(dbCredentials);
  let bookName = "string to be matched" ; 
  let ranksVal= 10
  
  let result = await pool
    .request()
    .input("item", sql.VarChar, bookName)
    .input("ranksVal", sql.Int , ranksVal)
    .query(`select top @ranksVal * from dbTable where book = @item order by counts desc`);

Ideally, the above code should return a result for the following SQL query:理想情况下,上述代码应返回以下 SQL 查询的结果:

 select top 10 * from dbTable where book = "string to be matched" order by counts desc

Alternatively, the following solution works:或者,以下解决方案有效:

  let result = await pool
    .request()
    .input("item", sql.VarChar, bookName)
    .query(`select top ${ranksVal} * from dbTable where book = @item order by counts desc`);

But I would like to understand how can we pass multiple values to req.input() method.但我想了解我们如何将多个值传递给req.input()方法。 Thank you.谢谢你。

To use an expression or a parameter in a TOP values clause you must use parentheses.要在 TOP 值子句中使用表达式或参数,您必须使用括号。 eg例如

 .query(`select top (@ranksVal) * from dbTable where book = @item order by counts desc`);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM