在 SAP HANA 数据库编写 Database Procedure 的两种方式

发布时间 2023-09-09 21:01:53作者: JerryWang_汪子熙

SAP HANA 数据库提供了多种用于数据库级别应用逻辑的编程选项。数据库程序(用于实现应用逻辑)可以编写为遵循 SAP HANA 数据库 SQLScript 语法的查询(query).

数据库程序(database procedure)可以具有多个输入参数和输出参数;它们可以是标量(scalar)类型(如整数、双精度、varchar)或表类型。

使用ADT工具,可以通过以下方式实现HANA数据库 procedure:

  1. AMDP

AMDP的基本思想是在ABAP服务器内部去管理 HANA 程序及其生命周期。为了允许在ABAP层内部采取原生方式消费 HANA功能,HANA 数据库的编程语言 SQLScript 已经集成到ABAP堆栈中了。AMDP 在 ABAP类方法中实现(称为AMDP方法),作为 SQLScript 代码的容器。这种设计思路提供了许多重要的优点:

它使 AMDP 能够以与任何其他ABAP开发对象相同的方式进行交付(生命周期管理)。
它允许我们实现并交付AMDP的 bug correction,就像我们对普通的 ABAP 类打补丁一样,比如包括 SAP Note支持(可支持性和可扩展性)。

  1. Database 数据库程序代理

SAP 官网的定义:

Using an implemented database procedure in the HANA repository, you have the option to create a corresponding proxy that is stored in the ABAP repository. The proxy represents the HANA database procedure interface in relation to ABAP programs.

在 HANA repository 中使用 implemented database procedure,可以选择创建一个相应的代理,该代理存储在 ABAP 存储库中。该代理扮演了为 ABAP 程序提供 HANA database procedure 接口的角色。

注意

SAP 建议使用ABAP管理的数据库程序,而不是使用数据库程序代理调用SQLScript程序。AMDP是数据库程序代理的替代技术。只有在使用辅助数据库连接来访问 SAP HANA数据库的特定情况下,才需要使用数据库程序代理。在这种特定下,SAP HANA 数据库并不是AS ABAP 系统的中央数据库,这种场景也被称之为 side-by-side scenario)。