从Node js中的sql server存储过程读取数据?

时间:2017-01-25 07:09:23

标签: javascript sql-server node.js

我正在尝试从sql server存储过程返回数据,然后通过传递列名来获取单个数据。出于某种原因,当我传递列名时,我得到了未定义。这是我到目前为止所尝试的,我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

execute回调的签名存在问题。它应为function(result, returnValue),其结果为recordSet

var updateMember = function( Country, BankID) {
   new sql.Request()
    .input('Country', sql.VarChar(50), Country)
    .input('BankID', sql.VarChar(50),  BankID)
    .execute('p_GetTransactionsStats').then(function(result, returnValue) {
      console.dir(result); // it should be [{},{}]

      for (var i = 0; i < result.length; i++) {
        console.log("Merchantname :-" + result[i].MERCHANTNAME);
        console.log("Bankname :-" + result[i].BankName);
      }
  }).catch(function(err) {
    console.dir(err);
  });
};

第二个解决方案

如果不改变promise回调方法,你可以调整从结果中获取价值的方式。

var updateMember = function( Country, BankID) {
   new sql.Request()
    .input('Country', sql.VarChar(50), Country)
    .input('BankID', sql.VarChar(50),  BankID)
    .execute('p_GetTransactionsStats').then(function(result) {
      console.dir(result); // it should be [[{},{}], returnValue:0]
      var records = result[0];

      for (var i = 0; i < records.length; i++) {
        console.log("Merchantname :-" + records[i].MERCHANTNAME);
        console.log("Bankname :-" + records[i].BankName);
      }
  }).catch(function(err) {
    console.dir(err);
  });
};

希望它对你有所帮助。

答案 1 :(得分:0)

您的结果是数组或数组 因此,您需要访问以下值:

    for (var i = 0; i < result.length; i++) {
        console.log("Merchantname :-" + result[0][i].MERCHANTNAME);
        console.log("Bankname :-" + result[0][i].BankName);
    }