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

前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
前面几篇讲了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', );
SAP HANA数据库能够实现存储过程调用的结果,也就是说,使用WITH OVERVIEW表达式将结果写入物理表。在WITH OVERVIEW表达式中,将字符串值传递给包含要实现的结果的输出参数位置。 返回的值不是本身,而是对已写入结果的表的引用。现在可以从指定的表中检索过程调用的结果,在本例中为OUTPUT_TABLE
var resCall = getRating(rating, , "schema.output_table");
WITH OVERVIEW表达式还允许将过程的结果写入全局临时表中, 也就是说,在会话关闭时被截断的表。要使用XS过程将过程的结果写入全局临时表中,则不指定结果表的名称,将包含一个空字符串(''),如以下示例所示:
var conn = $.db.getConnection();
resCall = getRating(rating, , '', 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 > ) {
$.response.setBody(result.ERROR.length + " errors occurred.");
} else {
$.response.setBody("no error occurred");
}
【HANA系列】【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)的更多相关文章
- 【HANA系列】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- 【公众号系列】超详细SAP HANA JOB全解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]超详细SAP HANA JOB全解 ...
- 如何在云端部署SAP HANA实战, Azure 上的 SAP HANA(大型实例)概述和体系结构
什么是 Azure 上的 SAP HANA(大型实例)? Azure 上的 SAP HANA(大型实例)是一种针对 Azure 的独特解决方案. 除了提供 Azure 虚拟机以用于部署和运行 SAP ...
- SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
大家都知道SAP HANA项目打包成Delivery Unit(缩写为DU).依照"官方"的开发模式,特别是整个团队仅仅使用一个HANA Instance进行项目开发,因为HANA ...
- 深入理解脚本化CSS系列第六篇——脚本化伪元素的6种方法
× 目录 [1]动态样式 [2]CSS类[3]setAttribute()[4]CSSRule对象添加[5]空样式覆盖[6]CSSRule对象删除 前面的话 我们可以通过计算样式来读取伪元素的样式信息 ...
- python、第六篇:视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...
- MongoDB基础教程系列--第六篇 MongoDB 索引
使用索引可以大大提高文档的查询效率.如果没有索引,会遍历集合中所有文档,才能找到匹配查询语句的文档.这样遍历集合中整个文档的方式是非常耗时的,特别是处理大数据时,耗时几十秒甚至几分钟都是有可能的. 创 ...
- JavaScript 专题系列第六篇,讲解深浅拷贝的技巧和以及实现深浅拷贝的思路
拷贝也是面试经典呐! 数组的浅拷贝 如果是数组,我们可以利用数组的一些方法比如:slice.concat 返回一个新数组的特性来实现拷贝. 比如: var arr = ['old', 1, tru ...
随机推荐
- Cordova热更新和App升级
web代码的更新此更新方式,只需要更新web前段代码,不需要更新android的原生代码.只是对js.html等的更新.1.添加插件 Cordova Hot Code Pushcordova plug ...
- Java-ConfigHelper工具类
/** * 读取配置文件 */ import java.io.File; import java.net.URL; import org.apache.commons.configuration.Co ...
- oracle rowtype
v_customer customerinfo%rowtype; select * into v_customer from customerinfo where guid = v_loan.cust ...
- Confluence 6.15 修改历史(Change-History)宏
修改历史(Change-History)宏显示了页面一个的更新历史:版本号,作者,日期和备注.这些内容将会在同一栏中进行显示. 屏幕截图:Confluence 中的修改历史(Change-Histor ...
- 第03组 Alpha冲刺(4/4)
队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐.搜索类算法 GitHub签入纪录: 暂无 ...
- mysql中in查询中排序
mysql中in查询条件的时候,很多时候排序是不规则的,如何按照in里面的条件进行排序呢? mysql中给出了办法,在in后面加order by field,order by field的首个条件是按 ...
- elasticsearch 单实例安装启动
elasticsearch 初次启动 下载 elasticsearch-6.3.2.tar.gz 创建目录 /usr/local/elasticsearch/ 解压 tar -zxf elastics ...
- readerwriterqueue 一个用 C++ 实现的快速无锁队列
https://www.oschina.net/translate/a-fast-lock-free-queue-for-cpp?cmp&p=2 A single-producer, sing ...
- python:BeautifulSoup学习
上一篇说到用BeautifulSoup解析源代码,下面我们就来实战一下: from bs4 import BeautifulSoup html = urllib.request.urlopen('ht ...
- DP&图论 DAY 4 上午
DP&图论 DAY 4 上午 概率与期望 概率◦某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A).◦假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那 ...