【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

您所在的位置:网站首页 动物儿歌课文视频 【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

2024-06-07 22:53| 来源: 网络整理| 查看: 265

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

前面几篇讲了SAP HANA XS JavaScript(JS)的基础内容和相应API,这篇讲一下JavaScript如何与后台交互,此篇讲存储过程(Procedures)。

从SAP HANA XS服务器端JavaScript(XSJS)调用存储过程,并使用JavaScript处理调用的结果。

XS程序提供了一种从XS服务器端JavaScript(XSJS)调用SAP HANA中的存储过程的方便方法,并使用JavaScript处理调用的结果。 XS程序库扩展了SAP HANA XS JavaScript数据库API中已有的功能。使用SAP HANA XS程序调用存储过程可以认为是开发XS JavaScript服务的任何简单XS JavaScript函数。

例如,在SAP HANA存储过程使用一个表作为输入参数和一个表作为输出参数,使用XS Procedures可以传递给该存储过程的JavaScript对象(或一组对象)。类似,存储过程调用的结果作为JavaScript对象的数组提供。将存储过程声明为XS JavaScript函数,然后调用存储过程,就像它是传递JavaScript对象的JavaScript函数一样。

要使用存储过程作为XS JavaScript函数,需要执行以下步骤:

使用引用现有表的参数调用过程,如果要将表作为参数传递而不是JavaScript对象,则必须在调用语句中指定表的名称(作为字符串)以及schema的名称。 以下示例显示如何引用表rating_table:

​ getRating('schema.rating_table', 3); ​

SAP HANA数据库能够实现存储过程调用的结果,也就是说,使用WITH OVERVIEW表达式将结果写入物理表。在WITH OVERVIEW表达式中,将字符串值传递给包含要实现的结果的输出参数位置。 返回的值不是本身,而是对已写入结果的表的引用。现在可以从指定的表中检索过程调用的结果,在本例中为OUTPUT_TABLE

​ var resCall = getRating(rating, 3, "schema.output_table"); ​

WITH OVERVIEW表达式还允许将过程的结果写入全局临时表中, 也就是说,在会话关闭时被截断的表。要使用XS过程将过程的结果写入全局临时表中,则不指定结果表的名称,将包含一个空字符串(''),如以下示例所示:

​ var conn = $.db.getConnection(); resCall = getRating(rating, 3, '', conn); ​

返回的引用指向全局临时表,可以使用相同的连接查询存储过程结果。为了确保访问全局临时表,有必要指定连接对象conn。

使用参数存储为表中的值来调用存储过程,如以下示例所示。使用与要传递的表的行对应的JavaScript数组来传递表值输入参数。这些行对象必须包含与列的名称对应的属性。 跳过的列填充为NULL,并且不符合相同命名列的属性将被忽略。

​ var XSProc = $.import("sap.hana.xs.libs.dbutils", "procedures"); XSProc.setTempSchema($.session.getUsername().toUpperCase()); var conn = $.db.getConnection(); var createPurchaseOrder = XSProc.procedure("SAP_HANA_DEMO", "sap.hana.democontent.epm.Procedures::poCreate", { connection: conn }); var result = createPurchaseOrder([{ "PURCHASEORDERID": '0300009001', "HISTORY.CREATEDBY": '0000000044', "HISTORY.CREATEDAT": new Date(), "HISTORY.CHANGEDBY": '0000000044', "HISTORY.CHANGEDAT": new Date() }]); if (result && result.ERROR.length > 0) { $.response.setBody(result.ERROR.length + " errors occurred."); } else { $.response.setBody("no error occurred"); } ​

 

博客转移,点击进入:【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

我在公众号里写了很多SAP的文章

有兴趣可以关注一下



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3