XSJS(经典)-使用$ .hdb接口(和表变量参数)的匿名SQLScript块

2020-08-21 13:54发布

         点击此处--->   EasySAP.com群内免费提供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数组传递 对象。 我希望将这种精确的方法移植到匿名块中,因为对于这种特殊用例,我无法创建过程。

         点击此处--->   EasySAP.com群内免费提供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数组传递 对象。 我希望将这种精确的方法移植到匿名块中,因为对于这种特殊用例,我无法创建过程。

付费偷看设置
发送
2条回答
打个大熊猫
1楼-- · 2020-08-21 14:42

不幸的是,XSJS经典数据库接口不支持匿名块。 您是否可以选择创建和使用临时表来插入和处理数据?

骆驼绵羊
2楼-- · 2020-08-21 14:41

嗨,弗洛里安!

感谢您的回复。 可惜没有得到支持,但是很高兴得到确认。


感谢您对temp表的建议。 确实,这就是我们现在使用的。

它可以完成工作,但是相比之下,它需要大量的额外代码,而且更加脆弱,因为运行相同的脚本可能需要多次创建(或删除)临时表。

欢呼和问候,

罗兰。

一周热门 更多>