云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

网站服务器_国产负载均衡设备_安全稳定

小七 141 0

网站服务器_国产负载均衡设备_安全稳定

这个博客总结了关于asabap管理的数据库对象的一些事实和规则,这应该在很久以前就完成了。但是最近它变得越来越重要,因为从本地HANA对象直接访问ABAP管理的数据库对象的趋势越来越大,而另一方面,ABAP管理的数据库对象变得越来越复杂。这可能会导致一个或另一个令人不快的惊喜。有关官方声明,另请参阅SAP Note 2511210.

数据库对象

数据库对象是一种人工制品,返利,如数据库表、SQL视图或存储过程。通常,数据库对象是用数据库的DDL定义的,如CREATE视图。这里我们不讨论HANA的计算视图。

ABAP管理的数据库对象

ABAP管理的数据库对象是AS ABAP标准数据库中ABAP数据库模式中的数据库对象,由AS ABAP管理和使用。asabap提供了abapdictionary、abapcd和AMDP等工具和框架来创建和编辑这样的数据库对象。对象不直接在数据库平台的开发环境中维护,各自的DDL由AS ABAP的数据库接口生成

最重要的ABAP管理的数据库对象是:

ABAP字典中使用基于表单的SE11(或最近基于源代码的ADT)定义的透明表的实例使用基于表单的SE11在ABAP字典中定义的经典数据库视图的实例CDS数据库视图实例使用ADT中ABAP CDS的DDL在ABAP字典中定义的CDS视图的实例AMDP类中定义的AMDP过程和AMDP函数实例,包括CDS表函数的AMDP函数实例ABAP特定会话变量的实例

除了数据库对象本身之外,AS ABAP框架中这些对象的定义还包括数据库中未知的元数据所描述的其他属性,例如ABAP类型、客户机依赖关系、表缓冲、外键关系等。这些由AS ABAP本身评估。

访问ABAP管理的数据库对象

可以通过AS ABAP的数据库接口访问ABAP管理的数据库对象:

从使用opensql的ABAP程序来自AMDP方法的实现从使用ABAP托管本机SQL(ADBC和EXEC SQL)的ABAP程序通过AS ABAP数据库接口以外的接口我们称这种访问为非ABAP管理的本机SQL此SQL在数据库中执行,不作为ABAP签入

这些访问的主要属性可以概括为:

访问ABAP托管数据库对象的规则

创建ABAP托管数据库对象实例的方式是AS ABAP的内部事务。当版本升级时,实际实现可能会以不兼容的方式更改。当使用非ABAP管理的本机SQL访问对象时,企业云服务器,应用与使用ABAP管理的本机SQL相同的限制(见下文)。此外,没有本机SQL接口可以作为捕捉任何更改的层。例如,甚至不能保证ABAP管理的数据库对象的名称,例如CDS数据库视图、AMDP过程或AMDP函数。使用CDS数据库视图作为SAP HANA视图的数据源或在非ABAP管理的数据库过程中调用AMDP函数等访问随时都可能无效。此外,SAP HANA数据库中特定于ABAP的会话变量(可修改ABAP管理的数据库对象的工作方式)未设置,淘客公众号系统,并且无法使用ABAP方法列出使用的位置。

在特殊情况下,当从外部以ABAP方式访问ABAP管理的数据库对象并因此发生错误时,如果应用程序能够接受asabap基础结构提供的技术支持不足,那么它们就可以绕过这个基本规则。应用程序本身负责避免这样的错误,云信息,并删除任何确实发生的错误。

开放式SQL是访问ABAP托管数据库对象的主要方法。只有opensql支持ABAP托管数据库对象的所有功能和语义属性。对ABAP管理的数据库对象所做的任何内部更改都由开放式SQL接口处理,并且对ABAP程序是透明的。

与本机SQL相比,AMDP提供了特定于数据库的SQL的高阶包装。如果opensql的作用域不够,第一个选项是尝试AMDP来访问ABAP管理的数据库对象。这主要适用于opensql中不支持的数据库过程调用,也适用于opensql中尚不存在的SQL元素的包装器,这些包装器没有足够的替代方案。例如使用开放式SQL尚不支持的内置函数。

原则上,AMDP只能根据其设计使用:

从ABAP或其他AMDP方法调用AMDP方法。使用abapcds和opensql访问CDS表函数。如果可能,没有来自本机SQL的调用

AMDP的使用提升或减弱了一些本机SQL限制,大数据要学什么,但它并不像开放SQL那样为ABAP管理的数据库对象的功能和语义属性提供相同的支持。

以下大多数本机SQL规则也适用于AMDP方法的实现,特别是关于DML写入。

ABAP管理的本机SQL(ADBC、EXEC SQL)受大多数与非ABAP管理的本机SQL相同的限制。ABAP字典中定义的字段顺序和语义属性一样未知。ABAP类型和数据库类型之间的映射只能用于某些类型。没有自动的客户端处理,表缓冲区总是被绕过。数据库中必须知道CDS实体的当前实例,例如带有输入参数的CDS视图可以创建为数据库视图或数据库函数。不兼容的变化也是一种可能性。CDS访问控制被绕过。