javascript - 输出参数值超过限制字符时的繁琐打包(8000)
问题描述
我正在使用下面的存储过程输出参数,当值超过 8000 个字符时,该值将被截断。任何人都可以给我一些想法或指导如何解决这个问题?我看到有人说使用存储过程中设置的几个变量来取值。但问题是我不知道我们会收到多少 8000 个字符,它会远远超过 8000 个。
request.addOutputParameter('JSONOUTPUT1', TYPES.VarChar);
request.addOutputParameter('JSONOUTPUT2', TYPES.VarChar);
request.on('returnValue', (name, value, matadata)=>{
result[name] = value; // if value is over 8000 characters will got truncated.
});
对于正常的查询 sql 结果,我使用下面的代码来接收从 sql server 返回的数据:
request.on("row", columns => {
result += columns[0].value;
});
上面我们从db中逐块读取数据的方式很完美!但是对于存储过程的输出,我似乎没有找到这种乏味的方式。
如果有人遇到类似问题并可以提供解决方案,我将提前表示感谢。
解决方案
对于任何面临以下相同错误的人,我最终是如何处理的:而不是使用 outputstoreprocedue 参数,而是使用查询。仍然逐行、逐块读取数据。
request.on("row", columns => {
columns.forEach((column)=> {
result[column.metadata.colName] = column.value;
})
});
request.on('requestCompleted', () => {
connection.close();
done(error, result);
});
connection.execSql(request);
以下是查询:
const query = `DECLARE @json1 AS VarChar(MAX)
DECLARE @json2 AS VarChar(MAX)
EXEC dbo.[abc_storeprocedure]
@i_STORE_NBR = '${input1}',
@jsonOutput1 = @json1 OUTPUT,
@jsonOutput2 = @json2 OUTPUT
SELECT @json1 as 'emailList'
SELECT @json2 as 'candidateList' `
仅供参考:在繁琐的 6.6.5 文本中已弃用
推荐阅读
- python - Python 错误:ValueError:无法将字符串转换为浮点数:'00nan'
- python-3.x - 如何使用带有卖价和买价的 pandas 数据框计算成交量加权平均价格(VWAP)?
- angular - Bulma CSS & 子角度组件
- sql - 如何在某些条件下获取每条记录
- python - 如何从用 xml 编写的配置文件中读取正则表达式设置?
- dart - 不要将 PageView 居中 - Flutter
- c# - 如何使用按钮名称作为变量修改按钮
- spring-boot - 尝试访问 API 端点但在其他端点上正常工作时出现 404 错误代码
- sql - 创建一个查询列表
- node.js - 发送电子邮件时显示警告消息