原文链接:添加链接描述
正文
在经历了长时间的停滞之后,开放式SQL的开发从沉睡中醒来,并在ABAP7.40中采取了一些主要步骤,以便包含来自SQL92的尽可能多的特性,并提供与ABAPCD的DDL的SELECT语句大致相同的功能。为了做到这一点,通过在ABAP运行时环境中引入一个新的SQL解析器来建立一个开放SQL的新基础。这样做的一个结果是,opensql在ABAP中扮演的角色与以前不同。而在7.40之前,opensql更多地被认为是ABAP语言本身的一部分,与此同时,SQL特性变得越来越明显。其中一个主要指标是宿主变量的新作用。在7.40之前,您在opensql语句中使用ABAP变量,就像在所有其他ABAP语句中一样。事实上,这有效地阻碍了进一步的发展。opensql语句在转换为本机SQL之后在数据库上执行。为了比在WHERE条件下简单地比较ABAP变量(比如在许多操作数位置上的SQL表达式)更复杂,opensql解析器必须能够清楚地区分由数据库计算的操作数和内容必须传递到数据库的ABAP变量。为了完成这一任务,opensql语句中的ABAP变量同时充分发挥了宿主变量的作用,就像静态原生SQL(execsql)中的ABAP变量一样。您可以而且应该在opensql中的ABAP主机变量前面加@。事实上,只有在这样做的情况下,才能使用从7.40版开始引入的所有新SQL特性来打开SQL。为了使opensql适合将来的应用,其他一些基本的改变被引入到opensql中,比如逗号分隔的列表和在可信的SQL子句后面添加SELECT语句。
作为这些措施的第一个好处,abap7.40已经推出了opensql的基本新特性,包括在不同操作数位置的SQL表达式或内联声明的可能性。随着abap7.50的发展,这个博客将继续介绍一些新特性(更多)。
宿主表达式
在几乎所有可以放置主机变量的位置,包括7.40版本的SQL表达式的操作数位置或编写SQL语句的工作区,都可以使用主机表达式