如何访问节点mssql中的输出参数?
How to access the output parameter in node mssql?
` request.input('xyz',sql.Int,1);
request.input('abc',sql.Numeric,2);
request.output('pqr',sql.Int);
request.output('def',sql.Char);
request.execute('[StoredProcedure]',function(err,recordsets,returnvalue){
next.ifError(err);
console.log(returnvalue);
})`
现在的问题是我将如何访问输出参数。
此致。
request.parameters.pqr.value
和 request.parameters.def.value
得到答案,所以分享它:)
实际上上面描述的方法对我使用 "mssql": "^4.3.0"
不起作用。
我不得不使用 promise 返回的结果对象并从 output
对象中提取参数。类似于:
res.output.
这是对我有用的示例代码:
poolPromise
.then(conn => conn.request())
.then(request => {
const forecastName = forecastDefinition.name;
// Input parameters
request.input('forecastName', sql.VarChar(50), forecastName);
...
// Output parameters
request.output('actualYear', sql.Int);
request.output('actualMonth', sql.Int);
...
return request.execute('[dbo].[' + generateForecastProcedure + ']')
})
.then((res, err) => {
if (err) {
console.log(`${generateForecastProcedure} error: `, err);
} else {
console.log(`${generateForecastProcedure} success: `, res);
// Callback to deal with further processing.
const output = (res.output || {});
const actualYear = output.actualYear;
const actualMonth = output.actualMonth;
callback(forecastDefinition, actualYear, actualMonth);
}
})
.catch(err => {
console.log(`${generateForecastProcedure} exception: `, err);
})
分析了 1 小时后,我发现了这个。希望对某人有用
您可以使用 recordsets.output.SQLReturn
而不是 request.parameters.SQLReturn
request.output("SQLReturn");
request.execute('sample', function (err, recordsets, returnValue, results) {
res.json({ code: 1, message: recordsets.output.SQLReturn });
}
` request.input('xyz',sql.Int,1);
request.input('abc',sql.Numeric,2);
request.output('pqr',sql.Int);
request.output('def',sql.Char);
request.execute('[StoredProcedure]',function(err,recordsets,returnvalue){
next.ifError(err);
console.log(returnvalue);
})`
现在的问题是我将如何访问输出参数。
此致。
request.parameters.pqr.value
和 request.parameters.def.value
得到答案,所以分享它:)
实际上上面描述的方法对我使用 "mssql": "^4.3.0"
不起作用。
我不得不使用 promise 返回的结果对象并从 output
对象中提取参数。类似于:
res.output.
这是对我有用的示例代码:
poolPromise
.then(conn => conn.request())
.then(request => {
const forecastName = forecastDefinition.name;
// Input parameters
request.input('forecastName', sql.VarChar(50), forecastName);
...
// Output parameters
request.output('actualYear', sql.Int);
request.output('actualMonth', sql.Int);
...
return request.execute('[dbo].[' + generateForecastProcedure + ']')
})
.then((res, err) => {
if (err) {
console.log(`${generateForecastProcedure} error: `, err);
} else {
console.log(`${generateForecastProcedure} success: `, res);
// Callback to deal with further processing.
const output = (res.output || {});
const actualYear = output.actualYear;
const actualMonth = output.actualMonth;
callback(forecastDefinition, actualYear, actualMonth);
}
})
.catch(err => {
console.log(`${generateForecastProcedure} exception: `, err);
})
分析了 1 小时后,我发现了这个。希望对某人有用
您可以使用 recordsets.output.SQLReturn
而不是 request.parameters.SQLReturnrequest.output("SQLReturn");
request.execute('sample', function (err, recordsets, returnValue, results) {
res.json({ code: 1, message: recordsets.output.SQLReturn });
}