点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在使用XSJS classic使用HANA 1 SP 12。
是否可以通过$ .hdb接口调用匿名块?
我想这样写:
var data = [{I:0,T:'World'}]; var stmt = [ 'DO(IN P_IN TABLE()=>?)','BEGIN','P_OUT = SELECT I + 1,\'Hello \'|| T FROM:P_IN;','END;', ] .join('\ n'); var conn = $ .hdb.getConnection(); var result = conn.executeQuery(stmt,data);
但是我收到了
$。hdb.Connection.executeQuery:位置1处的参数不是可以处理的类型
当我一起删除参数时:
var stmt = [ '做', '开始', 'SELECT * FROM DUMMY;', '结束;' ] .join('\ n'); var conn = $ .hdb.getConnection(); var result = conn.executeQuery(stmt);
我得到:
dberror($。hdb.Connection.executeUpdate):585-SQL错误,服务器错误代码:585。该函数不支持该语句
第一个错误告诉我executeQuery不接受绑定参数的数组值,第二个错误告诉我executeQuery无法执行匿名SQL脚本块。 我也用executeUpdate尝试了后者-同样的错误。
但是有什么可能的方法吗?
我想要这样做的主要原因是我的脚本从客户端接收了一个(可能很大)数据集,我希望将其用作要加入数据库表或视图的数据集。 因此,我的挑战是将javascript中的数据集放入SQL或SQL脚本执行上下文中,以便可以针对它编写SQL。
首先要弄乱匿名块的原因是,我们成功地调用了带有表变量输入参数的存储过程,这使我们能够以一种相当方便的方式将xsjs脚本中的数据作为javascript数组传递 对象。 我希望将这种精确的方法移植到匿名块中,因为对于这种特殊用例,我无法创建过程。
不幸的是,XSJS经典数据库接口不支持匿名块。 您是否可以选择创建和使用临时表来插入和处理数据?
嗨,弗洛里安!
感谢您的回复。 可惜没有得到支持,但是很高兴得到确认。
感谢您对temp表的建议。 确实,这就是我们现在使用的。
它可以完成工作,但是相比之下,它需要大量的额外代码,而且更加脆弱,因为运行相同的脚本可能需要多次创建(或删除)临时表。
欢呼和问候,
罗兰。
一周热门 更多>