如何解决过程参数未传递到SAP CAP应用程序
我有一个正在调用过程的SAP Cloud Application。所有没有参数的程序都可以正常运行,但是我无法使带有参数的程序正常工作。我将其范围缩小到了node.js服务文件中的以下几行:
const ip = [{"PID": PID},{"CENTERLAT": CENTERLAT},{"CENTERLONG": CENTERLONG},{"PTOL": PTOL},{"ETOL": ETOL},{"CURRLAT": CURRLAT},{"CURRLONG": CURRLONG},{"OPEN_CLOSE": OPEN_CLOSE},{"LDATE": LDATE},{"LTIME": LTIME}]
const output = await dbConn.callProcedurePromisified(sp,ip)
我得到的错误是:
{ code: -20007,message: 'Can not bind parameter(0).',sqlState: 'HY000' }
[2020-08-28T16:30:32.649Z | ERROR | 1987505]: An error occurred during serialization of the entity collection.
[2020-08-28T16:30:32.649Z | ERROR | 1987505]: Error stacktrace: SerializationError: An error occurred during serialization of the entity collection.
当我console.log ip时,我得到:
[ { PID: 'ab9359f1-2b72-4a4b-abf2-0295c7913b51' },{ CENTERLAT: 32.352521 },{ CENTERLONG: -117.632423 },{ PTOL: 3.999999 },{ ETOL: 5 },{ CURRLAT: 32.321456 },{ CURRLONG: -117.090456 },{ OPEN_CLOSE: 'C' },{ LDATE: '12122059' },{ LTIME: '121259' } ]
我的过程定义是:
PROCEDURE "PointPathDistance" (IN PID NVarChar(36),IN CENTERLAT Double,IN CENTERLONG Double,IN PTOL Double
IN ETOL Double,IN CURRLAT Double,IN CURRLONG Double,IN OPEN_CLOSE NVarChar(1),IN LDATE NVarChar (8),IN LTIME NVarChar(8),out result "USERLOCATIONS")
有什么想法吗? 谢谢。
解决方法
我正在这样做:
GroupIntoBatches
基本上将req.data解构为代码数组,并将其传递给callProcedurePromisified函数。
然后,我想为什么不只传递req.data?如下所示:
const {PID,CENTERLAT,CENTERLONG,PTOL,ETOL,CURRLAT,CURRLONG,OPEN_CLOSE,LDATE,LTIME} = req.data
const ip = [{"PID": PID},{"CENTERLAT": CENTERLAT},{"CENTERLONG": CENTERLONG},{"PTOL": PTOL},{"ETOL": ETOL},{"CURRLAT": CURRLAT},{"CURRLONG": CURRLONG},{"OPEN_CLOSE": OPEN_CLOSE},{"LDATE": LDATE},{"LTIME": LTIME}]
const output = await dbConn.callProcedurePromisified(sp,req.data)
有效!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。